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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2016, 12:40   #1
Romazzotti
 
Регистрация: 08.01.2016
Сообщений: 5
По умолчанию Нахождение наименьшего четного произведения двух чисел в последовательности

Есть много решений этой задачи, но они не понятные, я учусь в школе, поэтому знания у меня школьные.
Код:
program t28;
  const
    N=10000;
  var 
    a:array[1..N]of integer;
    i:integer;
    min:longint;
begin
     for i:=1 to N do readln(a[i]);
      min:=1000000;
     for i:=1 to N-6 do 
                    if (a[i]*a[i+6] mod 2=0) and (a[i]*a[i+6]<min)
                    then min:=a[i]*a[i+6];
     if min=1000000 then 
                        writeln(1)
                    else 
                        writeln(min);
end.
Есть ли тут ошибки и выполняет ли эта программа поставленную задачу?
Изображения
Тип файла: jpg ег2.jpg (64.5 Кб, 124 просмотров)
Тип файла: jpg ег1.jpg (38.1 Кб, 122 просмотров)

Последний раз редактировалось Stilet; 08.01.2016 в 13:14.
Romazzotti вне форума Ответить с цитированием
Старый 08.01.2016, 13:42   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

код должен быть читаем, для этого:
- воспользуйтесь тегом "code" - решеточка
- проставьте отступы
Упс, Stilet уже подправил

Код:
for i:=1 to N do readln(a[i]);
вы точно будете вводить 10000 элементов вручную? может быть воспользоваться функцией random?
Код:
a[i]:= random (100);
в любой задаче на поиск минимума, он не ищется так, за минимум принимается первый элемент (обычно,
хотя можно любой), и поиск минимума начинается со второго элемента;

Код:
writeln(-1)   - это по условии;
для справки в паскале есть функция определения четности/нечетности - odd (хотя конечно можно и через mod)

Цитата:
Есть ли тут ошибки и выполняет ли эта программа поставленную задачу?
запустить, посмотреть что выдает, сравнить с ручным вычислением на бумажке?

вообще как я понимаю по вашему решению, у вас перемножаются:
Код:
1 и 7 элементы
2 и 8 элементы
3 и 9 элементы
и т.д.
а по условию вроде как:
Цитата:
четное произведение двух показаний, между которыми не менее (т.е. больше 6 минут),
т.е. должно быть перемножение:
Код:
1 и 7 элемента
1 и 8 элемента
1 и 9 элемента
и т.д.
2 и 8 элемента
2 и 9 элемента
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 08.01.2016 в 13:46.
Niro вне форума Ответить с цитированием
Старый 08.01.2016, 14:20   #3
Romazzotti
 
Регистрация: 08.01.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Niro Посмотреть сообщение

вообще как я понимаю по вашему решению, у вас перемножаются:
Код:
1 и 7 элементы
2 и 8 элементы
3 и 9 элементы
и т.д.
а по условию вроде как:

т.е. должно быть перемножение:
Код:
1 и 7 элемента
1 и 8 элемента
1 и 9 элемента
и т.д.
2 и 8 элемента
2 и 9 элемента
Вот этого я не знаю, сам думал над этим(не меньше 6 секунд), но как это сделать и возможно ли решить эту программу без массива или уменьшить массив и как-то сдвигать его?
Romazzotti вне форума Ответить с цитированием
Старый 08.01.2016, 15:28   #4
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

вы про задание под буквой А или Б говорите?
для буквы А вам нужно просто добавить вложенный цикл, в котором будет перебор сначала для первого элемента перемножение с остальными, потом для второго....

для буквы Б просто счмтываете каждый элемент из файла и перемножате с остальными также считывая их построчно
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 08.01.2016, 15:29   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Массив нужен только для 6 (или 7.. я не читал условие) элементов
А хранить нужно максимальное (если числа натуральные. я снова не читал условие) четное и нечетное.. А дальше просто обновлять и сравнивать
Poma][a вне форума Ответить с цитированием
Старый 08.01.2016, 16:54   #6
Romazzotti
 
Регистрация: 08.01.2016
Сообщений: 5
По умолчанию

А как заполнить массив случайными числами в PascalABC?
Код:
a[i]=random(1,999):integer;
Romazzotti вне форума Ответить с цитированием
Старый 08.01.2016, 16:59   #7
Romazzotti
 
Регистрация: 08.01.2016
Сообщений: 5
По умолчанию

Код:
for i:=1 to N-6 do 
      begin 
       readln(a[i]);
       j:=6;
       min:=1000000
      repeat 
        k:=a[i]*a[i+j];
        j:=j+1;
        if (k<min)and (k mod 2=0) then
          min:=k;
      until j=9994;
Будет ли эта часть считать минимальное четное произведение двух элементов целочисленного массива, min будет дальше выводиться

Последний раз редактировалось Romazzotti; 08.01.2016 в 20:59.
Romazzotti вне форума Ответить с цитированием
Старый 08.01.2016, 19:25   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Нет. Не будет
Poma][a вне форума Ответить с цитированием
Старый 08.01.2016, 20:58   #9
Romazzotti
 
Регистрация: 08.01.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Нет. Не будет
А почему не будет? Что в нем не верно?
Romazzotti вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа для проверки, можно ли N представить в виде произведения двух простых чисел. паскаль Тетрадь Помощь студентам 13 24.09.2014 14:33
Можно число N представить в виде произведения двух простых чисел? Тетрадь Помощь студентам 0 19.09.2014 17:18
составить программу для нахождения наибольшего общего и наименьшего общего кратного двух натуральных чисел НОК(A,B)=A*B/НОД(A,B) sisaw Помощь студентам 0 06.05.2014 20:36
Turbo Pascal - Составить программу нахождения произведения двух наибольших из трех введенных с клавиатуры чисел.(Условный оператор lady.unika Паскаль, Turbo Pascal, PascalABC.NET 3 05.05.2012 21:36
Нахождение НОД двух чисел awlol Помощь студентам 2 28.11.2010 22:52