Форум умных людей

Задачи и головоломки => Помогите решить! => Тема начата: loki от Октябрь 25, 2011, 16:11:58



Название: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 16:11:58
Нужно составить программу в паскале

В линейной таблицы А (1 .. 10) найти максимальный элемент, стоящий на четных местах, и минимальный элемент, стоящий на не четных местах таблицы


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 16:15:33
только тело программы не нужно особо расписывать


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 17:19:47
Люди хотя бы основу кому не сложно, олимпиаду завтра сдать нужно


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 25, 2011, 18:15:11
Как то так наверно: ???

const n = 10;
var
    arr: array[1..n] of integer;
    max_num,min_num: integer;
    i, max_index,min_index: byte;
 
begin
 
    i := 1;
   repeat                       //цикл с постусловием
        write ('Число: ');
        readln(arr[i ]);
        i := i + 1
    until (arr[i-1] = 0) or (i > n);
   
    max_index := 2;                   //поиск максимального элемента в четных позициях таблицы
    max_num := arr[2];
    i := 2;
     while i <= n do begin
        if arr[i ] > max_num then begin
            max_index := i;
            max_num := arr[i ];
        i := i + 2
    end;


    min_index := 1;                   //поиск минимального элемента в нечетных позициях таблицы
    min_num := arr[1];
    i := 1;
     while i <= n do begin
        if arr[i ] < min_num then begin
            min_index := i;
            min_num := arr[i ];
        i := i + 2
    end;

 
    writeln ('Max = ',max_num);    //вывод на экран максимального четного элемента
    writeln ('position: ', max_index);
 
    writeln ('Min = ',min_num);  //вывод на экран минимального нечетного элемента
    writeln ('position: ', min_index);
readln
end.


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 18:59:16
блин, половину из этого мы не учили, ладно как-то выкручусь, всё равно спасибо


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 25, 2011, 19:01:12
а что вы не учили?
тут использованы 2 вида циклов, 2 типа чисел, массив и вывод на экран...
Если мне не изменяет память, то это азы Паскаля


Название: Re: Задача по информатике
Отправлено: Overseer от Октябрь 25, 2011, 19:01:16
ээ тебе надо уметь объявлять массивы, for/while/until (по выбору) и if.

не верю что этому не учили и задали задание


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 19:02:26
 for/while этим и пользуюсь


Название: Re: Задача по информатике
Отправлено: Overseer от Октябрь 25, 2011, 19:04:36
тогда я не понимаю, что может быть непонятно в выше описанном коде


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 19:06:05
until (arr[i-1] = 0) or (i > n);
эта функция
паскаль я учу пару недель


Название: Re: Задача по информатике
Отправлено: Лев от Октябрь 25, 2011, 19:11:02
repeat/until - это тоже самое :)


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 25, 2011, 19:11:35
until (arr[i-1] = 0) or (i > n);
эта функция
паскаль я учу пару недель
Это постусловие цикла repeat                       


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 19:14:03
я так понимаю тут собрались программисты, я сейчас допишу и скину своё решение буду благодарен если просмотрите


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 25, 2011, 19:15:20
Просто это элементарное программирование, для этого и программистом быть не надо


Название: Re: Задача по информатике
Отправлено: Лев от Октябрь 25, 2011, 19:17:34
а как будущий программист, вы должны понимать, что "повторять вплоть до" и "пока так, делать эдак" - это аналогичные цикличные операции.


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 19:27:05
извиняюсь если что-то очень глупое
N - минимальный M - максимальный

const k = 10;
var a: array[1..n] of integer; N,M,i: integer;
begin
writeln ('vvod tab a');
for i=1 to n do read (a)
i:=1; N:=a[1]
while i<k
for i to k-1 do
  begin
  if a<N then N:=a; i:=i+2
  end;
begin
while i<k
i:=2; M:=a[2];
for i to k-1 do
if a>M them M:=a;
i:=i+2;
end;
writeln ('M= ',); writeln('N= ',);
readln
end.


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 19:30:24
я не программист и не будущий, я просто участник олимпиады, хотя и информатика один из моих любимых предметов


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 25, 2011, 19:40:25
извиняюсь если что-то очень глупое
N - минимальный M - максимальный

const k = 10;
var a: array[1..n] of integer; N,M,i: integer;
begin
writeln ('vvod tab a');
for i=1 to n do read (a)
i:=1; N:=a[1]
while i<k
for i to k-1 do
  begin
  if a<N then N:=a; i:=i+2
  end;
begin
while i<k
i:=2; M:=a[2];
for u to k-1 do
if a>M them M:=a;
i:=i+2;
end;
writeln ('M= ',); writeln('N= ',);
readln
end.
Выделила 2 ошибки, которые сразу бросаются в глаза


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 19:43:32
Во втором случае i, а так обычный цикл в чем ошибка?


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 25, 2011, 19:44:38
Может я и ошибаюсь, но цикл
for i to k-1 do
подразумевает увеличение на +1 числа i
поэтому i:=i+2 не уместно в данном случае
И этот вид цикла нам не подходит...

Прошу меня поправить, это было давно и неправда :D


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 25, 2011, 19:47:01
Во втором случае i, а так обычный цикл в чем ошибка?
Синтаксис данного цикла выглядит так:
for начальное значение счетчика (i:=1)
       to конечное значение счетчика (20)
        do
      begin
        Тело цикла
      end;

У тебя начальное значение в цикле параметру i не присвоено ???


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 19:48:11
увеличивая 2+2+2... всегда число парное оно по идее должно идти по парным
сначала i:=2 потом i:=i+2


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 25, 2011, 19:49:57
Исходя из твоего кода число i будет увеличиваться на 3


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 19:52:38
но сначала i=1 потом 1+2=3


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 25, 2011, 19:56:08
но сначала i=1 потом 1+2=3
Сам по себе цикл for  увеличивает на каждем круге значение i на +1...
При этом ты еще искусственно на +2 увеличиваешь...Итого на каждом круге +3 получается...

Воспользуйся циклом while
Очень легко и просто в моем примере показано, как с помощью while найди нужные минимальные и максимальные значения...


Название: Re: Задача по информатике
Отправлено: loki от Октябрь 25, 2011, 19:58:48
repeat, until мы их не проходили информатик заподозрит...



Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 25, 2011, 20:01:44
Очень легко и просто в моем примере показано, как с помощью while найди нужные минимальные и максимальные значения...
Цикл while  вы проходили...

У тебя ошибка в нахождении максимального и минимального элементов...
Заполнение массива, которое я организовала с помощью repeat, until я сейчас даже не смотрю

Ладно, дальше сам компилируй свою програмку, у тебя есть работоспособный пример перед глазами :peace:

А я - спать :zzz:


Название: Re: Задача по информатике
Отправлено: moonlight от Октябрь 25, 2011, 22:04:28
const N=10;
var A:array[1..N]of integer;
    i:integer;
    min,max:integer;
begin
  min:=1;
  max:=2;
  for i:=1 to N do
  begin
    A:=Random(100);
    Write('A[',i,']=',A,'  ');
  end;
  Writeln;
  for i:=3 to N do
  begin
    if((i mod 2)=1)and(A<A[min])then min:=i
    else if((i mod 2)=0)and(A>A[max])then max:=i
  end;
  Writeln('min=',min,'  A[',min,']=',A[min]);
  Writeln('max=',max,'  A[',max,']=',A[max]);
end.

почемуто вместо A [ i ] копируется-вставляется A

(http://savepic.su/519125.png)


Название: Re: Задача по информатике
Отправлено: Вилли ☂ от Октябрь 25, 2011, 22:12:20
На случай, если Вы "mod" не изучали:

Код:
# Если t = 1 - нечетные, t = 2 - четные

const k = 10;
var a: array[1..k] of integer; N,M,i,t: integer;

begin
writeln ('Ввод значений:');
for i=1 to k do read (a[i]);
i:=1; N:=a[1]; N:=a[2]; t=1;
for i:=3 to k do
  begin
    if (a[i]<N) AND (t=1)  then N:=a;
    if (a[i]>M) AND (t=2)  then N:=a;
    if(t=1) then t:=2
    else t:=1;
  end;

writeln('Max = ',M);
writeln('Min = ',N);
readln;
end


Название: Re: Задача по информатике
Отправлено: Вилли ☂ от Октябрь 25, 2011, 22:18:34
почемуто вместо A [ i ] копируется-вставляется A
используй [ code ] *** [ / code ]


Название: Re: Задача по информатике
Отправлено: moonlight от Октябрь 25, 2011, 22:34:16
эта задача просто пример для изучения оператора цикла.
на олимпиадную никак не тянет.


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 26, 2011, 07:09:19
На случай, если Вы "mod" не изучали:

Код:
# Если t = 1 - нечетные, t = 2 - четные

const k = 10;
var a: array[1..k] of integer; N,M,i,t: integer;

begin
writeln ('Ввод значений:');
for i=1 to k do read (a[i]);
i:=1; N:=a[1]; N:=a[2]; t=1;
for i:=3 to k do
  begin
    if (a[i]<N) AND (t=1)  then N:=a;
    if (a[i]>M) AND (t=2)  then N:=a;
    if(t=1) then t:=2
    else t:=1;
  end;

writeln('Max = ',M);
writeln('Min = ',N);
readln;
end
Мне кажется, или в этой строке ошибка? :-\
Код:
 i:=1; N:=a[1]; N:=a[2]; t=1;
Наверно должно быть  ???
Код:
 i:=1;N:=a[1]; M:=a[2]; t=1;



И тут тоже... :-\
Код:
     
if (a[i]<N) AND (t=1)  then N:=a;
if (a[i]>M) AND (t=2)  then N:=a;

Наверно так?
Код:
     
if (a[i]<N) AND (t=1)  then N:=a;
if (a[i]>M) AND (t=2)  then M:=a;


Название: Re: Задача по информатике
Отправлено: Вилли ☂ от Октябрь 26, 2011, 07:58:34
Ай молодца!  :bravo2:  :bigkiss:
Моя школа  :tianchik:


Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 26, 2011, 08:07:14
Ай молодца!  :bravo2:  :bigkiss:
Моя школа  :tianchik:

:-[

а Вилли двоечник :tianchik:


Название: Re: Задача по информатике
Отправлено: Вилли ☂ от Октябрь 26, 2011, 12:49:49
:-[

а Вилли двоечник :tianchik:
А у нас это хорошо  :tianchik:

ссылка (http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D1%86%D0%B5%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B7%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9#.D0.93.D0.B5.D1.80.D0.BC.D0.B0.D0.BD.D0.B8.D1.8F)
Вики знает больше



Название: Re: Задача по информатике
Отправлено: Ленка Фоменка от Октябрь 26, 2011, 13:01:38
:-[
а Вилли двоечник :tianchik:
А у нас это хорошо  :tianchik:
ссылка (http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D1%86%D0%B5%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B7%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9#.D0.93.D0.B5.D1.80.D0.BC.D0.B0.D0.BD.D0.B8.D1.8F)
Вики знает больше
тогда так:
Вилли хорош :tianchik: :D


Название: Re: Задача по информатике
Отправлено: Лев от Октябрь 26, 2011, 15:31:21
Блин, не успел :)