Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 27.06.2012, 12:01   #1 (permalink)
Натуличка
Member
 
Регистрация: 06.02.2012
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль. Задача по преобразованию

дан массив. Поменять местами первый и минимальный элемент. Если элементов с мин. значением несколько, то в обмене должен учавствовать последний из них.
вот как у меня получилось решить эту задачу
var a: array [1..30] of integer;
i,n,min,imin: integer;
begin
writeln ('ввод кол-ва элементов массива');
readln (n);
writeln ('ввод элементы массива');
for:=1 to n do
readln (a[i]);
writeln;
min:=a[1];
imin:=1;
for:i=2 to n do
if a[i]<min then
min:=a[1];
imin:=i;
a [imin]:=a[1];
a[1]:=min;
for:=1 to n do
writeln ('a[i]=');
readln
end.
но к сожалению программа не выполняет условие в ответе у меня появляется:
а[i]:=
а[i]:=
а[i]:=
помогите, разобраться!
Натуличка вне форума   Ответить с цитированием

Старый 27.06.2012, 12:01
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Сейчас вам самое время посмотреть на эти темы

Задача на Паскаль
Задача, Паскаль
Задача. Паскаль
Задача на языке Паскаль
Задача на файлы, Паскаль АВС

Старый 27.06.2012, 12:15   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Как написали, так и появляется:
Цитата:
Сообщение от Натуличка Посмотреть сообщение
writeln ('a[i]=');
Надо так:
writeln ('a[i]= ',a[i]);
А то Вы выводите только текст, заключенный в кавычки.
Кроме того, программа не доделана: не обработана ситуация с несколькими элементами, имеющими одинаковое минимальное значение.
Vladimir_S вне форума   Ответить с цитированием
Старый 27.06.2012, 12:17   #3 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

У меня вообще ваш код минимум 2 ошибки выдал на этапе компиляции. Вы зачем после for двоеточие ставите?
Правильно писать надо так:
Код:
for i:=1 to n do
AlexZir вне форума   Ответить с цитированием
Старый 27.06.2012, 12:24   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
У меня вообще ваш код минимум 2 ошибки выдал на этапе компиляции. Вы зачем после for двоеточие ставите?
Лёша, так я ей уже советовал писать и отлаживать программы прямо на компьютере, а не в тетрадке - не хочет. Ну что же тут поделаешь...
Vladimir_S вне форума   Ответить с цитированием
Старый 27.06.2012, 12:25   #5 (permalink)
Натуличка
Member
 
Регистрация: 06.02.2012
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
У меня вообще ваш код минимум 2 ошибки выдал на этапе компиляции. Вы зачем после for двоеточие ставите?
Правильно писать надо так:
Код:
for i:=1 to n do
это у меня случайно получилось, я : не ставлю, пропустила i
Натуличка вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 27.06.2012, 12:26   #6 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Вот исправленный листинг программы
Код:
var a: array [1..30] of integer;
i,n,min,imin: integer;
begin
writeln ('ввод кол-ва элементов массива');
readln (n);
writeln ('ввод элементы массива');
for i:=1 to n do
readln (a[i]);
writeln;
min:=a[1];
imin:=1;
for i:=2 to n do
if a[i]<=min then begin min:=a[i]; imin:=i; end;
a [imin]:=a[1];
a[1]:=min;
for i:=1 to n do
writeln ('a[i]=',a[i]);
readln
end.
Оригинальный стиль программирования старался сохранить, хотя можно было бы обойтись меньшим количеством переменных.
AlexZir вне форума   Ответить с цитированием
Старый 27.06.2012, 12:35   #7 (permalink)
Натуличка
Member
 
Регистрация: 06.02.2012
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

и подумайте логически, если я пишу что у меня получилось в ответе, то значит у меня в программке нет синтаксических ответов! я послушалась вас Владимир и теперь проверяю на компе. вопрос не в синтаксисе, я когда набирала могла пропустить, вопрос в решении. демагогия ник чему
Натуличка вне форума   Ответить с цитированием
Старый 27.06.2012, 12:37   #8 (permalink)
Натуличка
Member
 
Регистрация: 06.02.2012
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Вот исправленный листинг программы
Код:
var a: array [1..30] of integer;
i,n,min,imin: integer;
begin
writeln ('ввод кол-ва элементов массива');
readln (n);
writeln ('ввод элементы массива');
for i:=1 to n do
readln (a[i]);
writeln;
min:=a[1];
imin:=1;
for i:=2 to n do
if a[i]<=min then begin min:=a[i]; imin:=i; end;
a [imin]:=a[1];
a[1]:=min;
for i:=1 to n do
writeln ('a[i]=',a[i]);
readln
end.
Оригинальный стиль программирования старался сохранить, хотя можно было бы обойтись меньшим количеством переменных.
как же можно обойтись меньшим колличеством переменных? я и так беру то, что необходимо по условию
Натуличка вне форума   Ответить с цитированием
Старый 27.06.2012, 12:40   #9 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Про кучу вы что-нибудь слышали? Если нет - даже не заморачивайтесь.
AlexZir вне форума   Ответить с цитированием
Старый 27.06.2012, 12:41   #10 (permalink)
Натуличка
Member
 
Регистрация: 06.02.2012
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Вот исправленный листинг программы
Код:
var a: array [1..30] of integer;
i,n,min,imin: integer;
begin
writeln ('ввод кол-ва элементов массива');
readln (n);
writeln ('ввод элементы массива');
for i:=1 to n do
readln (a[i]);
writeln;
min:=a[1];
imin:=1;
for i:=2 to n do
if a[i]<=min then begin min:=a[i]; imin:=i; end;
a [imin]:=a[1];
a[1]:=min;
for i:=1 to n do
writeln ('a[i]=',a[i]);
readln
end.
Оригинальный стиль программирования старался сохранить, хотя можно было бы обойтись меньшим количеством переменных.
спасибо конечно)
Натуличка вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:44.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.