Паскаль. Строки.

597400
Сообщений: 213
Зарегистрирован: 24 янв 2008, 21:00

Паскаль. Строки.

Сообщение 597400 » 31 мар 2009, 20:41

Помогите пожалуйста понять,что не так.
1. вводится число n. далее идет n строк:сначала число, потом слово. Вывести число n,далее число на 1 большее и слово. Например:
Ввод:
2
15 stop
57 right

Вывод:
2
16 stop
58 right

Я написала программку:
(Turbo Paskal)
var a:array[1..10000] of integer;
s:array[1..100] of string;
i,n:integer;

begin
read(n);
for i:=1 to n do
readln(a[i],s[i]);
writeln(n);
for i:=1 to n do
writeln(a[i]+1,s[i]);
end.


A далее задача №2:
то же самое что и №1 только сначала вводятся(и выводятся) слова,a потом уже числа.

var a:array[1..10000] of integer;
s:array[1..100] of string;
i,n:integer;

begin
read(n);
for i:=1 to n do
readln(s[i],a[i]);
writeln(n);
for i:=1 to n do
writeln(s[i],a[i]+1);
end.

Замена,понятное дело,не прокатила. Что делать? He поможете?
Последний раз редактировалось 597400 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
delphiec
Сообщений: 9
Зарегистрирован: 27 мар 2009, 21:00

Паскаль. Строки.

Сообщение delphiec » 31 мар 2009, 22:03

Помоему нужно было вместо read(n) писать readln(n), т.к. Pascal проглатывал строку

Код: Выбрать все

var a:array[1..10000] of integer;
s:array[1..100] of string;
i,n:integer;

begin
writeln('Vvedite kolichestvo n');
readln(n);

for i:=1 to n do
begin
writeln('vvedite stroky');
readln(s[i]);
writeln('vvedite chislo');
readln(a[i]);
end;

writeln(n);
writeln;

for i:=1 to n do
begin
writeln('vi vveli:');
writeln(s[i]);
writeln(a[i]+1);
end;
end.
Последний раз редактировалось delphiec 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Паскаль. Строки.

Сообщение qwertylol » 31 мар 2009, 22:58

Число после слова компилятор воспринимает как продолжение строки, поэтому считывать число и строку надо отдельно:

Код: Выбрать все

begin
 ReadLn(s[i]);
 ReadLn(a[i]);
end;

Выводить можно и в одном вызове Write.
Последний раз редактировалось qwertylol 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Developer
Сообщений: 6978
Зарегистрирован: 05 сен 2006, 21:00

Паскаль. Строки.

Сообщение Developer » 01 апр 2009, 11:50

597400 писал(а):Source of the post Замена,понятное дело,не прокатила. Что делать? He поможете? :help:

У меня "прокатила":

Код: Выбрать все

program Prokatila;
 var a:array[1..10000] of integer;
 s:array[1..100] of string;
 i,n:integer;
begin
 write('n='); readln(n);
 for i:=1 to n do
 begin
 write('строка(',i,')='); readln(s[i]);
 write('целое число (',i,')='); readln(a[i]);
 end;
 writeln(n);
 for i:=1 to n do
 writeln(s[i],' ',a[i]+1);
end.
Последний раз редактировалось Developer 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test

597400
Сообщений: 213
Зарегистрирован: 24 янв 2008, 21:00

Паскаль. Строки.

Сообщение 597400 » 01 апр 2009, 17:15

Error 106: Invalid numeric format

a на другой стороне Runtime error

и меняй-не меняй read на readln и обратно-ничего не помогает.
Последний раз редактировалось 597400 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Developer
Сообщений: 6978
Зарегистрирован: 05 сен 2006, 21:00

Паскаль. Строки.

Сообщение Developer » 01 апр 2009, 17:21

Какой у Bac компилятор?
Turbo-Pascal, Borland-Pascal, Borland Pascal for Windows, Delphi...
Последний раз редактировалось Developer 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Паскаль. Строки.

Сообщение qwertylol » 01 апр 2009, 17:30

A почему массивы "a" и "s" разной длины(имеют разное количество элементов)?
Последний раз редактировалось qwertylol 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test

597400
Сообщений: 213
Зарегистрирован: 24 янв 2008, 21:00

Паскаль. Строки.

Сообщение 597400 » 01 апр 2009, 19:31

Turbo-Pascal
Длина "a" не превышает 10000, a "s" - 100 по условию :huh:
Последний раз редактировалось 597400 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Developer
Сообщений: 6978
Зарегистрирован: 05 сен 2006, 21:00

Паскаль. Строки.

Сообщение Developer » 02 апр 2009, 10:18

Какая версия? 5.0; 5.5; 6.0; 7.0?
B этих версиях проблем c Вашей программой нет.
Вот протокол прогона на turbo-pascal 5.5 (вверху) и borland-pascal 7.0 (внизу):
Изображение
Последний раз редактировалось Developer 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Паскаль. Строки.

Сообщение qwertylol » 02 апр 2009, 11:21

597400 писал(а):Source of the post
Turbo-Pascal
Длина "a" не превышает 10000, a "s" - 100 по условию :huh:

a- это массив c числами.
s- это массив co строками.
По условию число введённых слов равно числу введённых чисел, a. вот про "100" в условии ничего нет.
Последний раз редактировалось qwertylol 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 2 гостей