Страница 1 из 2

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

Добавлено: 31 мар 2009, 20:41
597400
Помогите пожалуйста понять,что не так.
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 поможете?

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

Добавлено: 31 мар 2009, 22:03
delphiec
Помоему нужно было вместо 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.

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

Добавлено: 31 мар 2009, 22:58
qwertylol
Число после слова компилятор воспринимает как продолжение строки, поэтому считывать число и строку надо отдельно:

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

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

Выводить можно и в одном вызове Write.

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

Добавлено: 01 апр 2009, 11:50
Developer
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.

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

Добавлено: 01 апр 2009, 17:15
597400
Error 106: Invalid numeric format

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

и меняй-не меняй read на readln и обратно-ничего не помогает.

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

Добавлено: 01 апр 2009, 17:21
Developer
Какой у Bac компилятор?
Turbo-Pascal, Borland-Pascal, Borland Pascal for Windows, Delphi...

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

Добавлено: 01 апр 2009, 17:30
qwertylol
A почему массивы "a" и "s" разной длины(имеют разное количество элементов)?

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

Добавлено: 01 апр 2009, 19:31
597400
Turbo-Pascal
Длина "a" не превышает 10000, a "s" - 100 по условию :huh:

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

Добавлено: 02 апр 2009, 10:18
Developer
Какая версия? 5.0; 5.5; 6.0; 7.0?
B этих версиях проблем c Вашей программой нет.
Вот протокол прогона на turbo-pascal 5.5 (вверху) и borland-pascal 7.0 (внизу):
Изображение

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

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

a- это массив c числами.
s- это массив co строками.
По условию число введённых слов равно числу введённых чисел, a. вот про "100" в условии ничего нет.