Страниц: 1 [2] 3
  Печать  
Автор Тема: Задача по информатике  (Прочитано 11577 раз)
0 Пользователей и 1 Гость смотрят эту тему.
loki
Давненько
**
Offline Offline

Сообщений: 122

СПАСИБО
-вы поблагодарили: 9
-вас поблагодарили: 2


Просмотр профиля
Ответ #15 : Октябрь 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.
Последнее редактирование: Октябрь 25, 2011, 19:42:33 от loki Записан
loki
Давненько
**
Offline Offline

Сообщений: 122

СПАСИБО
-вы поблагодарили: 9
-вас поблагодарили: 2


Просмотр профиля
Ответ #16 : Октябрь 25, 2011, 19:30:24 �

я не программист и не будущий, я просто участник олимпиады, хотя и информатика один из моих любимых предметов
Записан
Ленка Фоменка
Сплошной мозг
***
Offline Offline

Сообщений: 3459

СПАСИБО
-вы поблагодарили: 911
-вас поблагодарили: 689



Просмотр профиля
Ответ #17 : Октябрь 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 ошибки, которые сразу бросаются в глаза
Записан

Всё временно: Любовь, искусство, планета Земля, Вы, Я... Особенно Я!
loki
Давненько
**
Offline Offline

Сообщений: 122

СПАСИБО
-вы поблагодарили: 9
-вас поблагодарили: 2


Просмотр профиля
Ответ #18 : Октябрь 25, 2011, 19:43:32 �

Во втором случае i, а так обычный цикл в чем ошибка?
Записан
Ленка Фоменка
Сплошной мозг
***
Offline Offline

Сообщений: 3459

СПАСИБО
-вы поблагодарили: 911
-вас поблагодарили: 689



Просмотр профиля
Ответ #19 : Октябрь 25, 2011, 19:44:38 �

Может я и ошибаюсь, но цикл
for i to k-1 do
подразумевает увеличение на +1 числа i
поэтому i:=i+2 не уместно в данном случае
И этот вид цикла нам не подходит...

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

Всё временно: Любовь, искусство, планета Земля, Вы, Я... Особенно Я!
Ленка Фоменка
Сплошной мозг
***
Offline Offline

Сообщений: 3459

СПАСИБО
-вы поблагодарили: 911
-вас поблагодарили: 689



Просмотр профиля
Ответ #20 : Октябрь 25, 2011, 19:47:01 �

Во втором случае i, а так обычный цикл в чем ошибка?
Синтаксис данного цикла выглядит так:
for начальное значение счетчика (i:=1)
       to конечное значение счетчика (20)
        do
      begin
        Тело цикла
      end;

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

Всё временно: Любовь, искусство, планета Земля, Вы, Я... Особенно Я!
loki
Давненько
**
Offline Offline

Сообщений: 122

СПАСИБО
-вы поблагодарили: 9
-вас поблагодарили: 2


Просмотр профиля
Ответ #21 : Октябрь 25, 2011, 19:48:11 �

увеличивая 2+2+2... всегда число парное оно по идее должно идти по парным
сначала i:=2 потом i:=i+2
Записан
Ленка Фоменка
Сплошной мозг
***
Offline Offline

Сообщений: 3459

СПАСИБО
-вы поблагодарили: 911
-вас поблагодарили: 689



Просмотр профиля
Ответ #22 : Октябрь 25, 2011, 19:49:57 �

Исходя из твоего кода число i будет увеличиваться на 3
Записан

Всё временно: Любовь, искусство, планета Земля, Вы, Я... Особенно Я!
loki
Давненько
**
Offline Offline

Сообщений: 122

СПАСИБО
-вы поблагодарили: 9
-вас поблагодарили: 2


Просмотр профиля
Ответ #23 : Октябрь 25, 2011, 19:52:38 �

но сначала i=1 потом 1+2=3
Записан
Ленка Фоменка
Сплошной мозг
***
Offline Offline

Сообщений: 3459

СПАСИБО
-вы поблагодарили: 911
-вас поблагодарили: 689



Просмотр профиля
Ответ #24 : Октябрь 25, 2011, 19:56:08 �

но сначала i=1 потом 1+2=3
Сам по себе цикл for  увеличивает на каждем круге значение i на +1...
При этом ты еще искусственно на +2 увеличиваешь...Итого на каждом круге +3 получается...

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

Всё временно: Любовь, искусство, планета Земля, Вы, Я... Особенно Я!
loki
Давненько
**
Offline Offline

Сообщений: 122

СПАСИБО
-вы поблагодарили: 9
-вас поблагодарили: 2


Просмотр профиля
Ответ #25 : Октябрь 25, 2011, 19:58:48 �

repeat, until мы их не проходили информатик заподозрит...

Записан
Ленка Фоменка
Сплошной мозг
***
Offline Offline

Сообщений: 3459

СПАСИБО
-вы поблагодарили: 911
-вас поблагодарили: 689



Просмотр профиля
Ответ #26 : Октябрь 25, 2011, 20:01:44 �

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

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

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

А я - спать Z-z-Z
Последнее редактирование: Октябрь 25, 2011, 20:04:13 от Ленка Фоменка Записан

Всё временно: Любовь, искусство, планета Земля, Вы, Я... Особенно Я!
moonlight
Умник
****
Offline Offline

Сообщений: 741

СПАСИБО
-вы поблагодарили: 19
-вас поблагодарили: 232


Просмотр профиля Email
Ответ #27 : Октябрь 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

Последнее редактирование: Октябрь 25, 2011, 22:27:02 от moonlight Записан

Зачем откладывать на завтра то, что можно отложить на послезавтра?
Вилли ☂
Гений-Говорун
*
Offline Offline

Сообщений: 1572

СПАСИБО
-вы поблагодарили: 532
-вас поблагодарили: 722





Просмотр профиля
Ответ #28 : Октябрь 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
Последнее редактирование: Октябрь 25, 2011, 22:35:14 от Трикс Записан
Вилли ☂
Гений-Говорун
*
Offline Offline

Сообщений: 1572

СПАСИБО
-вы поблагодарили: 532
-вас поблагодарили: 722





Просмотр профиля
Ответ #29 : Октябрь 25, 2011, 22:18:34 �

почемуто вместо A [ i ] копируется-вставляется A
используй [ code ] *** [ / code ]

Эти пользователи сказали вам СПАСИБО :

moonlight

За это сообщение 1 пользователь сказал спасибо!
Записан
Страниц: 1 [2] 3
  Печать  
 
Перейти в: