Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
5 / 1 / 2
Регистрация: 09.11.2013
Сообщений: 161
1

Записывать строки в файл то тех пор, пока не будет введена пустая строка

20.11.2013, 19:10. Показов 4894. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть код
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
f:text;
st:string
begin
assign (f,'file1.txt');
rewrite (f);
repeat
begin
write ('введите строку для записи');
read (st);
writeln (f,st);
end;
until st='';
Задумка в том, чтобы записывать строки в файл то тех пор, пока не будет введена пустая строка (т.е. просто нажат ентер без ввода чего либо) при запуске программы высвечиваетчся предложение ввести строку, после ввода строки (любой) программа еще раз пишет введите строку и закрывается.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2013, 19:10
Ответы с готовыми решениями:

Выводить числа в файл до тех пор, пока не будет введен 0
Привет всем. Немогу разобраться и написать правильный код программы для задачи, собственно условие:...

Программа должна считывать с клавиатуры тестовые строки и записывать их в массив пока не будет введена строка длина которого не равна 4 символам
Программа должна считывать с клавиатуры тестовые строки и записывать их в массив пока не будет...

Запрос пароля до тех пор, пока он не будет введен верно
Составить программу, которая запрашивает пароль (например, четырехзначное число) до тех пор, пока...

Запрашивать пароль до тех пор, пока он не будет правильно введен
Пожалуйста помогите написать программу: Составить программу, которая запрашивает пароль(например,...

2
Супер-модератор
6192 / 2938 / 1300
Регистрация: 04.03.2013
Сообщений: 5,780
Записей в блоге: 1
20.11.2013, 20:21 2
Ну во-первых, после танцев с бубном ваш цикл стал бесконечным, но это мелочи:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  f : text;
  st : string;
begin
  assign(f, 'fi.txt');
  rewrite(f);
  repeat
    write('введите строку для записи: ');
    readln(st);
    writeln(f, st)
  until st = '';
  close(f);
  readln
end.
Во-вторых, суть проблемы такова, что процедура readln предлагает ввести значение, пока вы его не введете, нажатие на Enter игнорируется.
1
5 / 1 / 2
Регистрация: 09.11.2013
Сообщений: 161
20.11.2013, 20:51  [ТС] 3
ildwine, Исправил на ваш вариант все заработало, но ошибка появилась далее.
Полное условие задачи такое: нужно открыть текстовый файл, заменить в нем все числа на их буквенные названия (1 на "один") и вывести на экран каждое предложение с новой строки.
Много кода:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
program zad2;
var
 f:text;
 st,st1,st2:string;
 m:array[1..50] of string;
 m2,m1:array[1..50] of string;
 i,j,k:integer;
 function inttostr(o:integer):string;
 var s:string;
 begin
  str(o,s);
  inttostr:=s;
 end;
begin
 for i:=1 to 10 do
  m[i]:=inttostr(i-1); {заполняю массив числами от нуля до девяти}
 m1[1]:='nol'; m1[2]:='odin';
 m1[3]:='dva'; m1[4]:='tri';
 m1[5]:='cheture'; m1[6]:='piat';
 m1[7]:='shest'; m1[8]:='sem';
 m1[9]:='vosem'; m1[10]:='deviat';
 assign (f,'file1.txt');
 rewrite (f);
 repeat {Ввод данных в файл}
 begin
  write ('vvedite stroku dlya zapisi v fail');
  readln (st);
  writeln (f,st);
 end;
 until st='';
 close (f);
 readln;
 reset (f);
 j:=1;
 while not eof(f) do 
 begin
  readln (f,st);
  for i:=1 to length(st) do {нахожу в строке цифры}
   for j:=1 to 10 do
   if st[i]=m[j][1] then
   begin
    delete (st,i,1); {удаляю найденную цифру и вставляю на ее место ее буквенное название}
    insert (m1[j],st,i);
   end;
  k:=0;
  for i:=1 to length(st) do {ищу в строке точки (считаем точку признаком конца предложения)}
  begin
   if (st[i]='.') and (k<>0) then {если не первая, то удаляем предложение до первой точки и копируем в массив}
   begin
    m2[j]:=copy(st,k+1,i-k+1);
    delete (st,k+1,i-k+1);
    j:=j+1;
   end;
   if (st[i]='.') and (k=0) then {если это первая точка, запоминаем ее и копируем предложение в массив}
   begin
    k:=i;
    m2[j]:=copy(st,1,k);
    j:=j+1;
   end;
  end;
  st:='';
 end;
 close (f);
 writeln;
 for i:=1 to j do {выводим получившийся массив предложений} 
 begin
  writeln (m2[i]);
 end;
end.

Лол, пока писал нашел три ошибки и половина заработала ХД. Но все таки осталась ошибка - В конце выводит все как нужно, но перед и после выведенных данных ставит очень много пустых строк. Думал, что где то внутри цикла writeln потерялся - вроде нету.
0
20.11.2013, 20:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2013, 20:51
Помогаю со студенческими работами здесь

Запрашивать пароль до тех пор, пока он не будет правильно введен
21. Составить программу, которая запрашивает пароль (например, четырехзначное число) до тех пор,...

Запрашивать пароль до тех пор, пока он не будет правильно введен
Составит программу , которая запрашивает пароль(например, четырехзначное число) до тех пор, пока он...

Организовать ввод чисел в цикле до тех пор пока не будет введен нуль
Организовать ввод чисел в цикле до тех пор пока не будет введен нуль. Найти наименьшее...

Пользователь вводит целые числа до тех пор, пока не будет введен ноль...
Пользователь вводит целые числа до тех пор, пока не будет введен ноль. Результат работы программы:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru