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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2011, 11:36   #1
gennadii
Пользователь
 
Регистрация: 12.01.2011
Сообщений: 37
По умолчанию Одномерный массив

Дана задача, знаю, что не сложная, но в теме с массивами, я пока мягко говоря, слабоват. Если не трудно, то пожалуйста помогите:
В массиве 15 элементов, найти минимальное кратное трем и для остальных среднее арифметическое, составить программу и блок-схему к ней.
gennadii вне форума Ответить с цитированием
Старый 12.01.2011, 11:50   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Найдите на форуме задаче про поиск минимального элемента в массиве - она основа, найдите первый элемент кратный трём, его и примите за первоначальный минимум.
Добавьте к обычной проверке в цикле, там где ищется min элемент проверку что бы текущий элемент был кратен трём, т.е. делился на три без остатка (используйте mod)
Т.е.
Код:
если (текущий элемент<min) и (кратен трем), то за минимум взять его
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 12.01.2011, 12:05   #3
gennadii
Пользователь
 
Регистрация: 12.01.2011
Сообщений: 37
По умолчанию

то есть получается
Код:
 if (i<min) and (i mod 3) then min:=i;
так?
gennadii вне форума Ответить с цитированием
Старый 12.01.2011, 12:16   #4
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Почти. У вас ведь массив, т.е. набор упорядоченных данных, так что надо указать имя массива и его индекс (например mas[5] - это означает что мы обращаемя к массиву с именем mas, к его пятому элементу ), это раз и во-вторых
Цитата:
(i mod 3)
и что, а кто будет проверять чему равен остаток от деления?
Подкоректировал
Код:
 if (massiv[i]<min) and (massiv[i] mod 3=0) then min:=massiv[i];
P.S. и не зубудьте про первоначальный минимум, его ищите в другом цикле перед этим
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 12.01.2011 в 12:18.
Niro вне форума Ответить с цитированием
Старый 12.01.2011, 13:23   #5
gennadii
Пользователь
 
Регистрация: 12.01.2011
Сообщений: 37
По умолчанию

Что-то неправильно, а что? всю голову сломал, подскажите, где торможу?
Код:
program zadacha_1;
 uses crt;
Const
  N=15;
var
  mas:array [1..n] of integer;
  i: integer;
  summa,min:integer;
  sr:real;
  begin
   clrscr;
   Writeln('Vvedite ', n, ' chisel:');
   Writeln;
   summa:=0;
    for i:=1 to n do
     begin
       Write('Vvedite mas[', i, ']=');
       readln(mas[i]);
       summa:=summa+mas[i];
     end;
     min:=mas[1];
     for i:=1 to n do
     begin
     if mas[i] < min then
       begin
        min:=mas[i];
        end;
        end;
          begin
            if (mas[i]<min) and (mas[i] mod 3=0) then min:=mas[i];
            end;
       begin
         sr:=summa/15;
         end;
              Writeln('minimalnoe kratnoe trem=', min);
              Writeln('srednee arifmeticheskoe massiva=',sr:3:1);
               Readkey;
         end.
gennadii вне форума Ответить с цитированием
Старый 12.01.2011, 13:36   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

А так?
Код:

program zadacha_1;
 uses crt;
Const
  N=15;
var
  m:array [1..n] of integer;
  i, pos: integer;
  summa,min:integer;
  sr:real;
  begin
   clrscr;
   Writeln('Vvedite ', n, ' chisel:');
   Writeln;
   summa:=0;
     for i:=1 to n do
     begin
       Write('Vvedite mas[', i, ']=');
       readln(m[i]);
       summa:=summa+m[i];
     end;
     for i := 1 to n do
     begin
         if ((m[i] mod 3) = 0) then
         begin
             pos := i;
             min := m[i];
             break;
         end;
     end;
     for i := pos to n do
     begin
         if (m[i] < min) and ((m[i] mod 3) = 0) then
         begin
            min:=m[i];
         end;
     end;
     sr:=summa/15;
     Writeln('minimalnoe kratnoe trem=', min);
     Writeln('srednee arifmeticheskoe massiva=',sr:3:1);
     Readkey;
end.
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 12.01.2011, 13:44   #7
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

for i:=1 to n do //находим первый элемент в массиве кратный трём и выходим из цикла
Код:
 if (mas[i] mod 3)=0 then begin min:=mas[i]; halt; end;
найденный элемент и считается первым минимальным (условно)
Вообще алгоритм поиска мин (max) элемента следующий - за мин. элем. принимается первый элемент массива, а затем в цикле он сравнивается с другими элементами и если находится элемент, меньший найденного первого минимума, то за минимум принимается этот найденный элемент.
у нас же нужно найти мин. кратный трём поэтому мы занимальный и принимаем первый элемент кратный трём
Код:
for i:=1 to n do
if (mas[i]<min) and (mas[i] mod 3=0) then min:=mas[i] else begin
                                                                                summa:=summa+mas[i];
                                                                                k:=k+1; 
                                                                                end;
srednee:=srednee/k;
writeln(srednee);
writeln(min);
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 12.01.2011, 16:41   #8
gennadii
Пользователь
 
Регистрация: 12.01.2011
Сообщений: 37
По умолчанию

Спасибо, Вам огромное за ваши труды!!!
Думаю вот это будет оптимальный вариант:
Код:
program zadacha_15;
 uses crt;
Const
  N=15;
var
  mas:array [1..n] of integer;
  i,pos,k: integer;
  summa,min:integer;
  sr:real;
  begin
   clrscr;
   Writeln('Vvedite ', n, ' chisel:');
   Writeln;
   summa:=0;
     for i:=1 to n do
     begin
       Write('Vvedite mas[', i, ']=');
       readln(mas[i]);
       summa:=summa+mas[i];
       k:=k+1;
       sr:=summa/k;
     end;
     for i := 1 to n do
     begin
         if ((mas[i] mod 3) = 0) then
         begin
             pos := i;
             min := mas[i];
             break;
         end;
     end;
     for i := pos to n do
     begin
         if (mas[i] < min) and ((mas[i] mod 3) = 0) then
         begin
            min:=mas[i];
         end;
     end;
     Writeln('minimalnoe kratnoe trem=', min);
     Writeln('srednee arifmeticheskoe massiva=',sr:3:1);
     Readkey;
end.
gennadii вне форума Ответить с цитированием
Старый 12.01.2011, 16:56   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю сократить:
Код:
program zadacha_15;
 uses crt;
Const
  N=15;
var
  mas:array [1..n] of integer;
  i,pos,k: integer;
  summa,min:integer;
  sr:real;
begin
   clrscr;
   Writeln('Vvedite ', n, ' chisel:');
   Writeln;
   summa:=0;min:=1;
     for i:=1 to n do
     begin
       Write('Vvedite mas[', i, ']=');       readln(mas[i]);
       summa:=summa+mas[i];
       if ((mas[i] mod 3) = 0)and(mas[i]<mas[min]) then min:=i;
     end;
     summa:=summa-mas[min];
     sr:=summa/(i-1);
     Writeln('minimalnoe kratnoe trem=', mas[min]);
     Writeln('srednee arifmeticheskoe massiva=',sr:3:1);
     Readkey;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.01.2011, 17:00   #10
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Не катит!
Цитата:
Код:
summa:=0;min:=1;
for i:=1 to n do
     begin
       Write('Vvedite mas[', i, ']=');       readln(mas[i]);
       summa:=summa+mas[i];
       if ((mas[i] mod 3) = 0)and(mas[i]<mas[min]) then min:=i;
     end;
допустим масиив у нас такой
1 2 3 4 5 6 7 8 9;
минимальный 3! Но по вашему коду это 1;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив , двухмерный массив 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
Одномерный массив Vovann Помощь студентам 6 23.06.2009 23:30