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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2013, 17:54   #1
Aleksandr litvinch
Пользователь
 
Регистрация: 08.10.2013
Сообщений: 19
По умолчанию Одномерный массив

есть задание , в одномерном массиве найти максимальное число , потом до этого числа умножать все числа которые находяться под парным индексом на максимальное...... Где ошибка ??? почему не выводит элементы массива ?
Код:

program Laba_5_2;
uses crt ;
var  a:array [1..100] of integer;
 b:array [1..50] of integer ;
n,i,j,max:integer;

 
 begin
    write('enter n=');
    readln(n);

     for i:=1 to n do
       begin
       a[i]:=random( 100);
       end;

     for i:=1 to n do
      write (a[i],'  ');

      max:=a[1];
       for i:=2 to n do

         if a[i]>max
           then
          max:=a[i];

          
          i:=j;

           
               writeln;
           writeln ('max =',max);


           

               writeln('MAssiv B');
               
               
               for i:=1 to j do
               b[i]:= a[2*i]*max;
               
               
               for i:=1 to j do
               write ( b[i],'  ');
           
           end.
Aleksandr litvinch вне форума Ответить с цитированием
Старый 10.11.2013, 17:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
               for i:=1 to n do begin
 if (i<j)and((i mod 2)=0) then  b[i]:= a[2*i]*max else b[i]:=a[i];
               write ( b[i],'  ');
end;
Так лучше?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2013, 18:03   #3
Aleksandr litvinch
Пользователь
 
Регистрация: 08.10.2013
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
               for i:=1 to n do begin
 if (i<j)and((i mod 2)=0) then  b[i]:= a[2*i]*max else b[i]:=a[i];
               write ( b[i],'  ');
end;
Так лучше?
выводит элементы массива А , а нужно чтоб вывело совсем новые элементы массива Б ,которые являются элементами массива А уножеными на максимальное число
Aleksandr litvinch вне форума Ответить с цитированием
Старый 10.11.2013, 18:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит условие не выполняется. Видимо j изначально равно нулю. Бери отладчик и выясняй. Впрочем проблема тут: i:=j; Поменяй местами.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2013, 18:37   #5
Aleksandr litvinch
Пользователь
 
Регистрация: 08.10.2013
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Значит условие не выполняется. Видимо j изначально равно нулю. Бери отладчик и выясняй. Впрочем проблема тут: i:=j; Поменяй местами.
да проблема действительно была в этом , и теперь выводяться числа все правильно , вот только те которые не участвуют в цикле ( тоесть те у которых не парный индекс ) становяться нулями
Aleksandr litvinch вне форума Ответить с цитированием
Старый 10.11.2013, 18:45   #6
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Ошибка очевидно в поиске максимума
Код:
for i:=2 to n do

         if a[i]>max
           then
          max:=a[i];
          i:=j; //тут надо j := i
Расставляй правильно Begin End или прерывай цикл с помощью break
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 10.11.2013, 19:29   #7
Aleksandr litvinch
Пользователь
 
Регистрация: 08.10.2013
Сообщений: 19
По умолчанию

Теперь все выводиться но он делает лишнии итерации program Laba_5_2;
Код:
uses crt ;
var  a:array [1..100] of integer;
 b:array [1..50] of integer ;
n,i,j,max:integer;

 
 begin
    write('enter n=');
    readln(n);

     for i:=1 to n do
       begin
       a[i]:=random( 100);
       end;

     for i:=1 to n do
      write (a[i],'  ');

      max:=a[1];
       for i:=2 to n do

         if a[i]>max
           then
           begin
          max:=a[i];
          j:=i;
          end;
           
               writeln;
           writeln ('max =',max);
          

               writeln('MAssiv B');
               

               for i:=1 to j  do
               b[i]:= a[i*2]*max;
              
               
                 for i:=1 to j do
               write ( b[i],'  ');
           end.

    for i:=1 to j  do
               b[i]:= a[i*2]*max;
проблема в этом месте , если максимальный элемент на 2 месте то при первой итерации элемент умножиться сам на себя , а при второй он пойдет дальше за максимальный элемент , чего делать нельзя

Последний раз редактировалось Stilet; 10.11.2013 в 19:44.
Aleksandr litvinch вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти одномерный массив элементы которого равны минимальным значениям в строках исходной матрицы и одномерный массив элементы... Richik123 Microsoft Office Excel 1 16.10.2013 15:45
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} Nickolai47 Помощь студентам 5 16.12.2012 14:51
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40