Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Паскаль. Задача по преобразованию (http://www.tehnari.ru/f41/t75434/)

Натуличка 27.06.2012 12:01

Паскаль. Задача по преобразованию
 
дан массив. Поменять местами первый и минимальный элемент. Если элементов с мин. значением несколько, то в обмене должен учавствовать последний из них.
вот как у меня получилось решить эту задачу
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]:=
помогите, разобраться!

Vladimir_S 27.06.2012 12:15

Как написали, так и появляется:
Цитата:

Сообщение от Натуличка (Сообщение 755243)
writeln ('a[i]=');

Надо так:
writeln ('a[i]= ',a[i]);
А то Вы выводите только текст, заключенный в кавычки.
Кроме того, программа не доделана: не обработана ситуация с несколькими элементами, имеющими одинаковое минимальное значение.

AlexZir 27.06.2012 12:17

У меня вообще ваш код минимум 2 ошибки выдал на этапе компиляции. Вы зачем после for двоеточие ставите?
Правильно писать надо так:
Код:

for i:=1 to n do

Vladimir_S 27.06.2012 12:24

Цитата:

Сообщение от AlexZir (Сообщение 755253)
У меня вообще ваш код минимум 2 ошибки выдал на этапе компиляции. Вы зачем после for двоеточие ставите?

Лёша, так я ей уже советовал писать и отлаживать программы прямо на компьютере, а не в тетрадке - не хочет. Ну что же тут поделаешь...:tehnari_ru_325:

Натуличка 27.06.2012 12:25

Цитата:

Сообщение от AlexZir (Сообщение 755253)
У меня вообще ваш код минимум 2 ошибки выдал на этапе компиляции. Вы зачем после for двоеточие ставите?
Правильно писать надо так:
Код:

for i:=1 to n do

это у меня случайно получилось, я : не ставлю, пропустила i

AlexZir 27.06.2012 12:26

Вот исправленный листинг программы
Код:

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:35

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

Натуличка 27.06.2012 12:37

Цитата:

Сообщение от AlexZir (Сообщение 755259)
Вот исправленный листинг программы
Код:

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:40

Про кучу вы что-нибудь слышали? Если нет - даже не заморачивайтесь.

Натуличка 27.06.2012 12:41

Цитата:

Сообщение от AlexZir (Сообщение 755259)
Вот исправленный листинг программы
Код:

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.

Оригинальный стиль программирования старался сохранить, хотя можно было бы обойтись меньшим количеством переменных.

спасибо конечно)


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.