Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2012, 23:44   #1
Маx
Пользователь
 
Регистрация: 17.03.2012
Сообщений: 25
Восклицание Нужно дописать программу!

Добрый день. Помогите дописать программу пожалуйста. она должна считать количество элементов до введенного слова (слово вводится с клавиатуры). Текст вводится в 8 строк. Осталось дописать процедуру которая считала бы символы. Помогите пожалуйста.

program LAB_3;
uses crt;

var Dinam: ^String;
F,s: Text;
i,k: integer;
NameFile: string[10];
Slovo: string;


begin
ClrScr;
WriteLn;
Write('Vvedit` imya faily (do 10 symvoliv): ');
ReadLn(NameFile);
if Length(NameFile) = 0 then halt;
assign(F, NameFile+'.TXT');
rewrite(F);
WriteLn('Vvedit` ryadky: ');
New(Dinam);
for i := 1 to 8 do
begin
Write(i:2,': ');
ReadLn(Dinam^);
WriteLn(F, Dinam^);
end;
Close(F);
WriteLn;
WriteLn('Textoviy fail stvoreno. Natysnit` klavishy');
readkey;
ClrScr;
WriteLn;
Write('Vvedit` slovo do yakogo rahyvaty: ');
ReadLn(Slovo);
Assign(F, NameFile+'.TXT');
Reset(F);
WriteLn;
WriteLn('Vmist faily:');
WriteLn;
for i:=1 to 8 do
begin
readln(F,Dinam^);
writeln(Dinam^);
end;



Close(F);
Dispose(Dinam);
readkey;
end.
Маx вне форума Ответить с цитированием
Старый 17.03.2012, 23:51   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Если я правильно понял, из коментариев в программе, то так:
Код:
uses
  crt;
var Dinam: ^String;
 F,s: Text;
 i,k: integer;
 NameFile: string[10];
 Slovo: string;


 begin
 ClrScr;
 WriteLn;
 Write('Vvedit` imya faily (do 10 symvoliv): ');
 ReadLn(NameFile);
 if Length(NameFile) = 0 then halt;
 assign(F, NameFile+'.TXT');
 rewrite(F);
 WriteLn('Vvedit` ryadky: ');
 New(Dinam);
 for i := 1 to 8 do
 begin
 Write(i:2,': ');
 ReadLn(Dinam^);
 WriteLn(F, Dinam^);
 end;
 Close(F);
 WriteLn;
 WriteLn('Textoviy fail stvoreno. Natysnit` klavishy');
 readln;
 readkey;
 ClrScr;
 WriteLn;
 Write('Vvedit` slovo do yakogo rahyvaty: ');
 ReadLn(Slovo);
 Assign(F, NameFile+'.TXT');
 Reset(F);
 WriteLn;
 WriteLn('Vmist faily:');
 WriteLn;
 for i:=1 to 8 do
 begin
 readln(F,Dinam^);
 writeln(Dinam^);
 if Dinam^=slovo then
   break
 end;



 Close(F);
 Dispose(Dinam);
 readkey;
 end.
Цитата:
Осталось дописать процедуру которая считала бы символы. Помогите пожалуйста.
Какие символы?

Цитата:
она должна считать количество элементов до введенного слова (слово вводится с клавиатуры)
А в программе
Код:
Write('Vvedit` slovo do yakogo rahyvaty: ');
Рискну предположить, что это означает "введите слово, до которого распечатать". Код поправил изходя из этого.

И вообще, зачем тут динамическая строка?
Все тривиальное просто

Последний раз редактировалось whatever; 18.03.2012 в 01:42.
whatever вне форума Ответить с цитированием
Старый 17.03.2012, 23:59   #3
Маx
Пользователь
 
Регистрация: 17.03.2012
Сообщений: 25
По умолчанию

но насколько я знаю sysutils для Делфи, а мне нужен Паскаль.
должна щитать символы текста(буквы, пробелы..).
та строка значит "ВВедите слово до которого щитать"
динамическая строка потому что в задании так написано)

Последний раз редактировалось Маx; 18.03.2012 в 00:12.
Маx вне форума Ответить с цитированием
Старый 18.03.2012, 00:58   #4
Маx
Пользователь
 
Регистрация: 17.03.2012
Сообщений: 25
По умолчанию

Если говорить точнее, то нужно найти позицыю (введеного) слова в тексте, который состоит с 8 строк)
Маx вне форума Ответить с цитированием
Старый 18.03.2012, 01:54   #5
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Тяжело с "иностанцами" общаться, так и не понял, что тебе нужно. Посмотри, такой вариант пойдет?
Код:
uses
  crt;
var Dinam: ^String;
 F,s: Text;
 i,k,count,countchar: integer;
 NameFile: string[10];
 Slovo: string;


 begin
 ClrScr;
 WriteLn;
 Write('Vvedit` imya faily (do 10 symvoliv): ');
 ReadLn(NameFile);
 if Length(NameFile) = 0 then halt;
 assign(F, NameFile+'.TXT');
 rewrite(F);
 WriteLn('Vvedit` ryadky: ');
 New(Dinam);
 for i := 1 to 8 do
 begin
 Write(i:2,': ');
 ReadLn(Dinam^);
 WriteLn(F, Dinam^);
 end;
 Close(F);
 WriteLn;
 WriteLn('Textoviy fail stvoreno. Natysnit` klavishy');
 readkey;
 ClrScr;
 WriteLn;
 Write('Vvedit` slovo do yakogo rahyvaty: ');
 ReadLn(Slovo);
 Assign(F, NameFile+'.TXT');
 Reset(F);
 WriteLn;
 WriteLn('Vmist faily:');
 WriteLn;
 count:=0;
 countchar:=0;
 for i:=1 to 8 do
 begin
 readln(F,Dinam^);
 writeln(Dinam^);
 count:=count+1;
 countchar:=countchar+length(dinam^);
 if Dinam^=slovo then
   break
 end;
 writeln(count);// позиция введеного слова в тексте, который состоит с 8 строк)
 writeln(countchar);//символы текста(буквы, пробелы..).
 
 Close(F);
 Dispose(Dinam);
 readkey;
 end.
Прошлый тоже рабочий, sysutils меняй на crt.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 18.03.2012, 13:27   #6
Маx
Пользователь
 
Регистрация: 17.03.2012
Сообщений: 25
По умолчанию

я сейчас напишу пример роботы програмы, чтоб было понятней:
Вводим строки:
1: собака
2: телефон
3: кот
4: яблоко
5: дерево
6: слон
7: жаба
8: лампа
Вводим слово до которого считать: кот
Программа должна ответить: до слова кот 13 символов.
Грубо говоря это позицыя слова кот -1
Маx вне форума Ответить с цитированием
Старый 18.03.2012, 14:22   #7
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

Код:
var
F: Text;
i, k, e: integer;
NameFile: string[10];
Dinam, Slovo: string;


begin
k:=0;
  WriteLn;
  Write('Vvedit` imya faily (do 10 symvoliv): ');
  ReadLn(NameFile);
  if Length(NameFile) = 0 then EXIT;
  assign(F, NameFile+'.TXT');
  rewrite(F);
  WriteLn('Vvedit` ryadky: ');
  for i := 1 to 8 do
    begin
      Write(i:2,': ');
      ReadLn(Dinam);
      WriteLn(F, Dinam);
    end;
  Close(F);
  WriteLn;
  WriteLn('Textoviy fail stvoreno. Natysnit` klavishy');
  WriteLn;
  readln;
  Write('Vvedit` slovo do yakogo rahyvaty: ');
  ReadLn(Slovo);
  Assign(F, NameFile+'.TXT');
  Reset(F);
  WriteLn;
  WriteLn('Vmist faily:');
  WriteLn;
  for i:=1 to 8 do
    begin
      readln(F,Dinam);
      writeln(Dinam);
      if dinam <> Slovo then k:=k+length(Dinam)
      else
        begin
          e:=1; break;
        end;
    end;
    if E<>1 then k:=-1;
  Close(F);
  if k>=0 then writeln('до слова ', Slovo,' ',K,' символов');
  if K=-1 then writeln('нет такого слова');
  readln;
end.
как - то так
как-то так
Arhangel7 вне форума Ответить с цитированием
Старый 18.03.2012, 15:22   #8
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от Маx Посмотреть сообщение
я сейчас напишу пример роботы програмы, чтоб было понятней:
Вводим строки:
1: собака
2: телефон
3: кот
4: яблоко
5: дерево
6: слон
7: жаба
8: лампа
Вводим слово до которого считать: кот
Программа должна ответить: до слова кот 13 символов.
Грубо говоря это позицыя слова кот -1
Тогда вот так:
Код:
uses
  crt;

var Dinam: ^String;
 F,s: Text;
 i,k,count,countchar: integer;
 NameFile: string[10];
 Slovo: string;


 begin
 ClrScr;
 WriteLn;
 Write('Vvedit` imya faily (do 10 symvoliv): ');
 ReadLn(NameFile);
 if Length(NameFile) = 0 then halt;
 assign(F, NameFile+'.TXT');
 rewrite(F);
 WriteLn('Vvedit` ryadky: ');
 New(Dinam);
 for i := 1 to 8 do
 begin
 Write(i:2,': ');
 ReadLn(Dinam^);
 WriteLn(F, Dinam^);
 end;
 Close(F);
 WriteLn;
 WriteLn('Textoviy fail stvoreno. Natysnit` klavishy');
 readkey;
 ClrScr;
 WriteLn;
 Write('Vvedit` slovo do yakogo rahyvaty: ');
 ReadLn(Slovo);
// Assign(F, NameFile+'.TXT'); //это тоже не нужно второй раз
 Reset(F);
 WriteLn;
 WriteLn('Vmist faily:');
 WriteLn;
 count:=0;
 countchar:=0;
 for i:=1 to 8 do
 begin
 readln(F,Dinam^);
 writeln(Dinam^);
 count:=count+1;
 countchar:=countchar+length(dinam^);
 if Dinam^=slovo then
 begin
   countchar:=countchar-length(dinam^);
   break
 end;
 end;
 writeln(countchar);//то, что тебе нужно, проверял на собаках, телефонах и котах.

 Close(F);
 Dispose(Dinam);
 readkey;
readln
 end.
Кстати, вот с этим
Цитата:
Грубо говоря это позицыя слова кот -1
в корне не согласен. Позиция слова кот равна трем, так как он находится в третьей строке:
Цитата:
собака
телефон
кот
яблоко
дерево
слон
жаба
лампа
Вот если бы эти 8 слов писались в файл в одну строчку,
Цитата:
собака телефон кот яблоко дерево слон жаба лампа
тогда да, "позиция слова кот-1", но метод решения был бы совершенно другой.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 18.03.2012, 15:50   #9
Маx
Пользователь
 
Регистрация: 17.03.2012
Сообщений: 25
По умолчанию

Спасибо большое очень помогли!

Последний раз редактировалось Маx; 18.03.2012 в 17:26.
Маx вне форума Ответить с цитированием
Старый 18.03.2012, 17:26   #10
Маx
Пользователь
 
Регистрация: 17.03.2012
Сообщений: 25
По умолчанию

еще один вопрос. А как сделать так чтобы считало еще в виде, например, стиха, чтобы в каждой строке было по несколько слов, а не одно как в придыдущем примере?
Маx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно дописать программу alex0097 Фриланс 3 16.10.2011 14:05
Нужно дописать программу!!! Bal_Bes Помощь студентам 1 08.06.2011 18:08
Нужно дописать программу на Ассемблере Seoha Помощь студентам 0 22.01.2011 17:13
Нужно дописать программу (C\C++) Operator-cn Помощь студентам 0 09.03.2010 20:03