Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2008, 01:00   #1
дангер
Пользователь
 
Регистрация: 28.01.2008
Сообщений: 15
По умолчанию что делает эта программа и где ошибка?

var a: array[1..10]of integer;
i: integer;
begin
for i :=1 to 10 do a[i]:=i;
for i :=1 to 10 do a[i+1]:=a[i];
end.

Помогите понять что делает эта программа и где ошибка (как ее исправить). спасибо. очень срочно нужно.
дангер вне форума Ответить с цитированием
Старый 28.01.2008, 01:14   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Код:
var a : array [1..10] of integer; 
      i : integer; 
begin
for i := 1 to 10 do a[i] := i; //присваиваем элементам массива значения i
// Результат 1 2 3 4 5 6 7 8 9 10
for i := 1 to 10 do a[i+1] := a[i]; // практически тоже самое только со смещением
// Результат 1 1 1 1 1 1 1 1 1 1
end.
Возможно ошибка в этой строке (в делфи всё работает без ошибок):
for i := 1 to 10 do a[i+1] := a[i];

a[i + 1] При i = 10 идёт обращение к 11 элементу... А размерность массива 10.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 28.01.2008, 01:14   #3
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Прога создает целочисленный масив на 10 элементов.
строка for i :=1 to 10 do a[i]:=i; заполняет масив числами от 1 до 10 по порядку!
Строка for i :=1 to 10 do a[i+1]:=a[i]; - должна заполнять эт же масив теми же числами, но со сдвигом на один элемент масива (собственно тут и ошибка) т.к. при i=10 у тя a[i+1] получится 11 - а такого элемента нет!
Полный (и верный текст) выглядит так:
Код:
var a: array[1..10]of integer;
i: integer;
begin
for i :=1 to 10 do a[i]:=i;
for i :=0 to 9 do a[i+1]:=a[i];
end.
Сорри: не видел этого ответа!!!
Цитата:
for i := 1 to 10 do a[i+1] := a[i]; // практически тоже самое только со смещением
// Результат 1 1 1 1 1 1 1 1 1 1
ЗЫ: Эт не есть верный результат!!!!

Правильный:
// релультат 1 2 3 4 5 6 7 8 9
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 28.01.2008 в 01:20.
Yurk@ вне форума Ответить с цитированием
Старый 28.01.2008, 01:20   #4
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
..........
Код:
var a: array[1..10]of integer;
i: integer;
begin
for i :=1 to 10 do a[i]:=i;
for i :=0 to 9 do a[i+1]:=a[i];
end.
Сорри: не видел этого ответа!!!

ЗЫ: Эт не есть верный результат:
// релультат 1 2 3 4 5 6 7 8 9
for i :=0 to 9 do a[i+1]:=a[i]; - а тут идёт ссылка на нулевой элемент....

А какое условие задачи?

АДД: // Результат 1 1 1 1 1 1 1 1 1 1 - и всёже верный результат работы самого первого кода в теме... ))
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Последний раз редактировалось Карась; 28.01.2008 в 01:23.
Карась вне форума Ответить с цитированием
Старый 28.01.2008, 01:22   #5
дангер
Пользователь
 
Регистрация: 28.01.2008
Сообщений: 15
По умолчанию

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

ЗЫ: Эт не есть верный результат:
// релультат 1 2 3 4 5 6 7 8 9
Да, у меня такой же
результат получился. только не пойму зачем в массив сначала записывается число 1, а затем меняется на следующее? В чем смысл задачи и какая задача могла бы подойти под эту программу? А вообще, народ, спасибо. Сижу - туплю
дангер вне форума Ответить с цитированием
Старый 28.01.2008, 01:24   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Скорее всего имелось ввиду var a: array[0..9]of integer;
Мы в любом случае перебираем все элементы массива!
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 28.01.2008, 01:26   #7
дангер
Пользователь
 
Регистрация: 28.01.2008
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Карась Посмотреть сообщение
А какое условие задачи?
а условие вот и надо придумать. Сижу - не придумывается.
дангер вне форума Ответить с цитированием
Старый 28.01.2008, 01:28   #8
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
а условие вот и надо придумать.
Так поищи по форуму готовую задачу с решением. Здесь таких полно!
И не напрягайся
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 28.01.2008, 01:31   #9
дангер
Пользователь
 
Регистрация: 28.01.2008
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
Так поищи по форуму готовую задачу с решением. Здесь таких полно!
И не напрягайся
я по форуму ищу. но мне надо придумать задачу именно к этой программе, вот в чем вопрос, а также найти ошибку и исправить.
дангер вне форума Ответить с цитированием
Старый 28.01.2008, 01:36   #10
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Может быть:
Заполнить элементы масива целыми числами!
Полученный масив данных сдвинуть на один шаг вправо! (возможно вместо a[i+1]:=a[i]; имелось ввиду a[i+1]:=i;?? Иначе прога теряет ввесь смысл )
Тогда решение (на мой взгляд) будет таким:
Код:
var a: array[1..10]of integer;
i: integer;
begin
for i :=1 to 10 do a[i]:=i;

for i :=1 to 10 do
if i=10 then a[1]:=i else a[i+1]:=i;
end.
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 28.01.2008 в 01:57.
Yurk@ вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа которая делает кроссворд Иллидан Софт 15 02.12.2014 06:34
по правой стороне поля, при печати, делает полосу Виктор1966 Свободное общение 1 11.03.2008 13:08
Народ расскажите кто нужен для создания игры и кто что делает Kosoy135 Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 16.09.2007 18:59
ошибка 48 - программа больше 62520 байт. Что делать? Pancher Паскаль, Turbo Pascal, PascalABC.NET 22 02.08.2007 01:11