Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2013, 00:24   #1
Konsyello
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 26
По умолчанию Проверка написанного кода для массива: получить новую последовательность, выбросив все значения, равные max

Даны действительные числа A[1],A[2],A[3],...,A[n].Получить новую последовательность, выбросив из исходной все члены со значением max(A[1],A[2],A[3],...,A[n]).
Код С:
Код:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    unsigned int size;
    double *array = NULL;
    
    printf("Введите размер массива:", endl);
    scanf("%6.2i, &size);
    
    /*создание динамического массива*/
    array = new double[size];
    
    printf("Введите массив из " size " элементов: " &endl);
    for (unsigned int i = 0; i < size; ++i)
        scanf("%6.2i", &array[i]);
    
    /*нахождение максимального элемента массива*/
    double max = array[0];
    for (unsigned int i = 1; i < size; ++i)
        if (max < array[i])
            max = array[i];
    
    /* удаление максимальных элементов*/
    unsigned int deleted = 0;
    for (unsigned int i = 0; i < size - deleted; ++i)
        if (array[i] == max)
        {
            for (unsigned int j = i + 1; j < size - deleted; ++j)
                array[j - 1] = array[j];
            
            ++deleted;
        }
    size -= deleted;
    
    /* вывод нового массива*/
    printf("Новый массив: ", &endl);
    for (unsigned int i = 0; i < size; ++i)
        printf(array[i], " ");
    printf << std::endl;
    
    /*удаление памяти*/
    delete[]array;
    
    return 0;
}
________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Вы теги вставили, а вот код поместили не внутри тегом, а после них.

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 20.10.2013 в 09:09.
Konsyello вне форума Ответить с цитированием
Старый 20.10.2013, 09:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а в чём проблема запустить программу и лично убедиться, работает она как надо или нет?!

На мой взгляд, в ней всё хорошо, алгоритм должен работать.
Я бы, конечно, цикл удаления i крутил в обратную сторону:
Код:
 /* удаление максимальных элементов*/
    unsigned int deleted = 0;
    for (unsigned int i = size-1; i >= 0; ++i)
        if (array[i] == max)
          .....
но это дело вкуса...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить из массива все элементы, равные х. Biohazard251 Паскаль, Turbo Pascal, PascalABC.NET 4 18.12.2012 10:12
Получить текст возвращаемого значения вместо кода sectors70 Win Api 5 16.09.2012 00:23
Перестановкой из n элементов называется последовательность длины n, все элементы которой различны. Получить перестановки (Паскаль) Pa s Помощь студентам 3 24.05.2012 13:06
(PAS)Одномерные массивы.Получить последовательность min(max... dimokin777 Помощь студентам 13 10.11.2011 18:50
Найти позицию кратчайшей последовательность в списке A в котором встречаются все значения из списка B. xaoc2 Свободное общение 1 12.06.2011 23:26