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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2012, 20:21   #1
Yuuuu
Пользователь
 
Регистрация: 26.01.2012
Сообщений: 16
По умолчанию найдите ошибки в составлении массива

Всем добрый вечер! Помогите плиз найти ошибки в задачах, а то в итоге какая-то муть выходит(((

Дан массив целых чмсел, состоящий из 10 элементов. Записать его с клавиатуры. Вывести индексы тех элементов, значения которых больше значения предыдущего элемента.
Код:
var a:array [1..10] of integer;
i: Integer;

begin
for i:=1 to 10 do begin 
Write ('a[', i, '] = ');
Readln(a[i]);
if a[i] > a[i-1] then Writeln(i);
end;
readln;
end.
Определить есть ли 2 пары элементов с одинаковыми знаками. Элементы вводятся с клавиатуры.
Код:
const n = 5 ;
var a:array [1..n] of integer;
i: Integer;  
index: Integer; 

begin
index: =0;
for i:=1 to n - 1 do begin 
Write ('a[', i, '] = ');
Readln(a[i]); 
If ((a[i]>0) and (a[i+1]>0)) or ((a[i]<0) and (a[i+1]<0)) then writeln ('True') else writeln('No');
end;
readln;
readln;
end.

Последний раз редактировалось Stilet; 05.02.2012 в 21:48.
Yuuuu вне форума Ответить с цитированием
Старый 05.02.2012, 20:28   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Код:
if a[i] > a[i-1] then Writeln(i);
Когда i = 1, i - 1 = 0, и Вы вылетаете за границы массива. Вам надо сначала считать, а потом уже циклом от 2 до 10 выполнить основную задачу. Если писали сами, то исправить сможете
Код:
If ((a[i]>0) and (a[i+1]>0))
На этом шаге Вы считали i-ый элемент, i+1-го у Вас ещё нет
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 05.02.2012, 20:31   #3
Yuuuu
Пользователь
 
Регистрация: 26.01.2012
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Greblin Посмотреть сообщение
Код:
if a[i] > a[i-1] then Writeln(i);
Когда i = 1, i - 1 = 0, и Вы вылетаете за границы массива. Вам надо сначала считать, а потом уже циклом от 2 до 10 выполнить основную задачу. Если писали сами, то исправить сможете
Здесь понял: от 2 до 10 брать надо?
Код:
If ((a[i]>0) and (a[i+1]>0))
Цитата:
На этом шаге Вы считали i-ый элемент, i+1-го у Вас ещё нет
А вот тут если можно поподробнее...
Yuuuu вне форума Ответить с цитированием
Старый 05.02.2012, 20:35   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Цитата:
Сообщение от Yuuuu Посмотреть сообщение
Здесь понял: от 2 до 10 брать надо?
В первом цикле от 1 до 10 только считать данные, другим циклом с 2 до 10 собственно проверить что там требуется

Цитата:
Сообщение от Yuuuu Посмотреть сообщение
Код:
If ((a[i]>0) and (a[i+1]>0))
А вот тут если можно поподробнее...
Ну Вы считали только i-ый элемент только что, i+1-го у Вас в массиве ещё нет, Вы его только на следующем шаге цикла считаете
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 05.02.2012, 20:39   #5
Yuuuu
Пользователь
 
Регистрация: 26.01.2012
Сообщений: 16
По умолчанию

If ((a[i]>0) and (a[i]>0)) or ((a[i]<0) and (a[i+1]<0)) then writeln ('True') else writeln('No');

Так, что ли?
Yuuuu вне форума Ответить с цитированием
Старый 05.02.2012, 20:44   #6
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Вы этот a[i+1] ещё не считали с клавиатуры, а уже сравниваете с ним. Там может быть любой мусор лежать, пока Вы не считаете его на следующей итерации цикла. Опять-таки - разбейте на два цикла: первый считывает, второй проверяет
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 05.02.2012, 20:46   #7
Yuuuu
Пользователь
 
Регистрация: 26.01.2012
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Greblin Посмотреть сообщение
Вы этот a[i+1] ещё не считали с клавиатуры, а уже сравниваете с ним. Там может быть любой мусор лежать, пока Вы не считаете его на следующей итерации цикла. Опять-таки - разбейте на два цикла: первый считывает, второй проверяет
А вы не могли бы написать как это будет выглядеть в паскале. Ну очень мне это понять надо!
Yuuuu вне форума Ответить с цитированием
Старый 05.02.2012, 21:24   #8
9i.
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 103
По умолчанию

вам нужно просто использовать 2 разных цикла в каждой из программ
1- для ввода всех данных в массив
2- для проверки проверяемых условий
9i. вне форума Ответить с цитированием
Старый 05.02.2012, 22:04   #9
Yuuuu
Пользователь
 
Регистрация: 26.01.2012
Сообщений: 16
По умолчанию

Плиз, напишите как это будет в паскале. Я уже 3 часа маюсь...
Yuuuu вне форума Ответить с цитированием
Старый 05.02.2012, 22:56   #10
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

Код:
Readln(a[i]);
end;
for i:=1 to n - 1 do 
If ((a[i]>0) and (a[i+1]>0)) or ((a[i]<0) and (a[i+1]<0)) then writeln ('True') else writeln('No');
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите ошибки zircul Паскаль, Turbo Pascal, PascalABC.NET 9 06.10.2010 17:23
найдите ошибки в запросе morindos Помощь студентам 2 23.06.2010 22:38
Найдите ошибки и исправте??? Пожалуйста Очень срочно VADOS2009-1 Паскаль, Turbo Pascal, PascalABC.NET 1 05.06.2009 01:09
Найдите, пожалуйта,ошибки в задаче!очень срочно! Wia Помощь студентам 2 06.12.2008 20:02