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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2011, 21:22   #1
Mifiar
Новичок
Джуниор
 
Регистрация: 02.11.2011
Сообщений: 2
По умолчанию Одномерный массив

Здравствуйте. Помогите,пожалуйста.

Задание:
Цитата:
Дана последовательность натуральных чисел a1, a2, ..., an. Создать массив из четных чисел этой последовательности. Если таких чисел нет, то вывести сообщение об этом факте.

Код:
Program mass;
 Uses crt;
  Var
   Matrix: array [1..10] of integer;
   i,n: integer;
    Begin
     Writeln('Vvedite kolichestvo chlenov posledovatelnosti (An)');
      Read(n);
       Writeln('Vvedite elementi massiva');
        For i:=1 to n do
         Read(Matrix[i]);
          For i:=1 to n do
           If (Matrix[i] mod 2 = 0) then  Writeln(Matrix[i]:3)
            else writeln('Net chetnyh');
end.

Проблема в то,что при вводе нечетного количества членов последовательности и последним элементом нечетное число- он выводит сразу массив из четных ,а также пишет "нет нечетных".
Немного переправил,он все равно все в кучу собирает. Т.е. ввести 8 и 1 2 3 4 5 6 7 8-это выводит каждое четное,промеж них вставляет "нет нечетных"

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

потому что, нет нечётных нужно выводить ПОСЛЕ того, как пройдены все элементы массива (ну, если там реально нет нечётных, конечно.
сделать это можно, например, так:
Код:
var isOddOnly : boolean; {в строке только нечётные!}
.....


    isOddOnly := true; {изначально считаем, что в строке ТОЛЬКО нечётные}
    For i:=1 to n do
       If (Matrix[i] mod 2 = 0) then begin
            Writeln(Matrix[i]:3);
             isOddOnly := false; {ага! Раз встретили чётное число, значит переменной присвоить ложь! Есть в строке чётные!}
       end;

   {после окончания цикла} 
   if isOddOnly then writeln('Net chetnyh');

p.s. а ещё, Вы решаете не ту задачу, которую Вам дали в условиях!
Вам нужно не печатать чётные числа на экран, а сохранить их во втором массиве...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2011, 10:59   #3
Mifiar
Новичок
Джуниор
 
Регистрация: 02.11.2011
Сообщений: 2
По умолчанию

Спасибо.
Mifiar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
одномерный массив Кирилл17 Помощь студентам 5 22.12.2008 00:13