IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите решить задачу с строками!
KolDun
сообщение 18.06.2004 4:17
Сообщение #1





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Дан текстовый файл. Какой буквой чаще всего начинаются слава данного текста.Ответ должен быть записан в другом текстовом файле.

Ну с файлами я справлю тока прошу помочь с:
Какой буквой чаще всего начинаются слава данного текста.

Помогите пожалуйста сильно парюсь. blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 18.06.2004 7:09
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Мое предложение такое:
создаем массив из 26 эл-тов (кол-во букв).
Писимвольно читаем файл, если встечаем пробел, то следующую букву смотрим и увеличиваем содержимое нужной ячейки массива. (например встретилась буква A, тогда 1 эл-т массива увеличиваем.)
Потом просто смотрим, в какой ячейке массива больше значение.
--------

Это если в условии не сказанно, что буквы могут быть кирилические и заглавные.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
KolDun
сообщение 19.06.2004 15:46
Сообщение #3





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Можно кодом записать пожалуйста так как в строках я 0 =(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
HelpAusHeaven
сообщение 21.06.2004 0:01
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Мужской

Репутация: -  0  +


Цитата(KolDun @ 18.06.04 4:17)
Дан текстовый файл. Какой буквой чаще всего начинаются слава данного текста.Ответ должен быть записан в другом текстовом файле.

Ну с файлами я справлю тока прошу помочь с:
Какой буквой чаще всего начинаются слава данного текста.

Помогите пожалуйста сильно парюсь.  blink.gif

Свои типы данных вводить можно?

Вообще можно и без них, чистой комбинаторикой, но получится двумерная голимотья страшно жрущая ресурсы машины))) хотя человеку это не заметно...


--------------------
Рассылка: "Решение Вами Предложенных Задач На Языке PASCAL. Алгоритмы на PASCAL."
Подписка по e-mail: comp.soft.prog.pascal123-sub@subscribe.ru
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 21.06.2004 9:40
Сообщение #5


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Цитата(Oleg_Z @ 18.06.04 8:09)
Писимвольно читаем файл, если встечаем пробел, то следующую букву смотрим и ....

Не забудь про первый символ - перед ним нет пробела!
А также проверка переноса на предидущей строке...


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 21.06.2004 10:45
Сообщение #6


Гость






Если без излишеств, то вариант предложенный Олегом выглядит примерно так:
Код

Const
 Separators=[' ',',','.','!','?',':',';'];
Var
 Count:Array['a'..'z'] Of Integer;
 c:Char;
 Max:Integer;
 MaxC:Char;
 f:File Of Char;
Begin
 For c:='a' To 'z' Do
   Count[c]:=0;
 Assign(f,'In.Txt');
 Reset(f);
 While Not Eof(f) Do
 Begin
   While Not Eof(f) Do
    Begin
      Read(f,c);
      If Not (c In Separators) Then
         Break;
    End;
    If Not (c In Separators) Then
      Inc(Count[c]);
    While Not Eof(f) Do
    Begin
      Read(f,c);
      If c In Separators Then
         Break
    End
 End;
 Close(f);
 Max:=Count['a'];
 MaxC:='a';
 For c:='a' To 'z' Do
    If (Count[c] > Max) Then
    Begin
       Max:=Count[c];
       MaxC:=c
    End;
 Assign(f,'Out.Txt');
 ReWrite(f);
 Write(f,MaxC);
 Close(f)
End.

Или что-то похожее...
 К началу страницы 
+ Ответить 
APAL
сообщение 21.06.2004 18:32
Сообщение #7


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


А вот мой вариант - вроде даже покороче будет.... rolleyes.gif
Код
Var
 f0,f : Text;
 St,S : String;
 i    : Byte;
 m    : Array[1..30] of Word;
function IntToStr(j: Longint): String;
var
Sa: string[11];
begin
Str(j, Sa);
IntToStr := Sa;
end;
Begin
 If ParamCount<1 then halt else Assign(f0,ParamStr(1));
 Assign(f,'!Result.txt');
 Reset(f0);
 s:=''; For i:=1 to 30 do m[i]:=0;i:=1;
 While Not EOF(f0) do
 Begin
   Readln(f0,St);
   While Length(St)>0 do
     If St[1]=' ' then Delete(St,1,1)
       else
       Begin
         If Pos(UpCase(St[1]),S)=0 then
         Begin
           S:=S+UpCase(St[1]);
           Inc(m[Length(S)]);
         End
           else Inc(m[Pos(UpCase(St[1]),S)]);
         While (St[i]<>' ') and (i<Length(St)) do Inc(i);
         Delete(St,1,i);
         i:=1;
       End;
 End;
 Close(f0);
 ReWrite(f);
 For i:=1 to Length(s) do Writeln(f,s[1]+' = '+IntToStr(m[i]));
 Close(f);
End.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
KolDun
сообщение 28.06.2004 18:49
Сообщение #8





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Цитата
Const
Separators=[' ',',','.','!','?',':',';'];
Var
Count:Array['a'..'z'] Of Integer;
c:Char;
Max:Integer;
MaxC:Char;
f:File Of Char;
Begin
For c:='a' To 'z' Do
Count[c]:=0;
Assign(f,'In.Txt');
Reset(f);
While Not Eof(f) Do
Begin
While Not Eof(f) Do
    Begin
      Read(f,c);
      If Not (c In Separators) Then
      Break;
    End;
    If Not (c In Separators) Then
      Inc(Count[c]);
    While Not Eof(f) Do Выкидывает ERROR1: Invalid DOS function code.
    Begin
      Read(f,c);
      If c In Separators Then
      Break
    End
End;
Close(f);
Max:=Count['a'];
MaxC:='a';
For c:='a' To 'z' Do
    If (Count[c] > Max) Then
    Begin
    Max:=Count[c];
    MaxC:=c
    End;
Assign(f,'Out.Txt');
ReWrite(f);
Write(f,MaxC);
Close(f)
End.



Код предоставленный Apal вообще нечего не делает =( или мне так кажется =(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 28.06.2004 22:41
Сообщение #9


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Цитата
Код предоставленный Apal вообще нечего не делает =( или мне так кажется =(


Еще как работает! Я тестировал.

Я уверен, что такой вывод сделан из-за того, что "кто-то" не удосужился хотя бы разобраться как работает эта програмка.
(а я думал мою "оригинальность" оценят - обидно)

Чтобы "делала":
В качестве параметра в программу передается имя входного файла. Если его нет - работа программы завершается. Если есть - она работает и результат помещает в файл !RESULT.TXT - его и смотри.


P.S.: Действительно немного обидно. Что-то делаешь - думаешь вот, человеку помог, он чего то новое узнал, научился.... А оказывается человеку это и не особо нужно, ему бы побыстрее зачет получить...

Сообщение отредактировано: APAL - 28.06.2004 22:43


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 28.06.2004 22:55
Сообщение #10


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


По поводу передачи в программу данных как параметры:

1. Если програмку откомпилировать на диск, т.е. получить запускаемый файл с расширением EXE , то параметр задается в командной строке.
Пример:
MYPROG.EXE InFile.txt
где InFile.txt - это и есть параметр

2. Если вы находитесь на стадии отладки программы и Вам нужно передать параметры в нее, то для этого используйте меню:
Run -> Parameters
в появившемся окошке вбейте нужные параметры. Если взять пример выше, то вбить следует InFile.txt.

Параметры отделяются друг от друга пробелом.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
KolDun
сообщение 29.06.2004 0:43
Сообщение #11





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Цитата
uses crt;
Var
f0,f : text;
St,S : String;
i    : Byte;
m    : Array[1..30] of Word;
function IntToStr(j: Longint): String;
var
Sa: string[11];
begin
Str(j, Sa);
IntToStr := Sa;
end;
Begin
If ParamCount<1 then halt else Assign(f0,'in.txt');
Assign(f,'in2.txt');
Reset(f0);
s:=''; For i:=1 to 30 do m[i]:=0;i:=1;
While Not EOF(f0) do
Begin
Readln(f,St);
While Length(St)>0 do
  If St[1]=' ' then Delete(St,1,1)
    else
    Begin
      If Pos(UpCase(St[1]),S)=0 then
      Begin
        S:=S+UpCase(St[1]);
        Inc(m[Length(S)]);
      End
        else Inc(m[Pos(UpCase(St[1]),S)]);
      While (St[i]<>' ') and (i<Length(St)) do Inc(i);
      Delete(St,1,i);
      i:=1;
    End;
End;
Close(f0);
ReWrite(f);
For i:=1 to Length(s) do Writeln(f,s[1]+' = '+IntToStr(m[i]));
Close(f);
End.


Програму я записал так.

В файле in.txt записанно:
Hwllow My wordld wholw things

По товим словам программа в файл In2.txt должна записать букву w.

Но этого не происходит sad.gif


Вышесказанными словами я не хочу обижать тебя и твой талант програмирование. и в предпоследнем топе я не имел ввиду что программа плохая так как она не работает у меня. Я сразу дописал что я что-то не так делаю, просто я програмирую не так уж долга и всех функций не знаю, и проект по Паскалю у меня большой это одно задание из 10 и на над ним я бился 2 дня прежде чем написать сюда.

Я не хочу сор и оскарблением, и не говорю что код полхой, просто у меня что-то не получается... sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
KolDun
сообщение 29.06.2004 0:46
Сообщение #12





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Цитата(APAL @ 28.06.04 22:55)
По поводу передачи в программу данных как параметры:

1. Если програмку откомпилировать на диск, т.е. получить запускаемый файл с расширением EXE , то параметр задается в командной строке.
Пример:
  MYPROG.EXE InFile.txt
где  InFile.txt  - это и есть параметр

2. Если вы находитесь на стадии отладки программы и Вам нужно передать параметры в нее, то для этого используйте меню:
Run -> Parameters
  в появившемся окошке вбейте нужные параметры. Если взять пример выше, то вбить следует InFile.txt.

Параметры отделяются друг от друга пробелом.

Спосибо заработало. Но хочу чтобы и твоя заработала.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 29.06.2004 12:17
Сообщение #13


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Assign(f,'in2.txt'); исправь на Assign(f0,'in2.txt'); - это твоя ошибка

Здесь опечатка:
For i:=1 to Length(s) do Writeln(f,s[1]+' = '+IntToStr(m[i]));
замени на
For i:=1 to Length(s) do Writeln(f,s[i]+' = '+IntToStr(m[i])); - это моя ошибка

И т.к. ты задаешь имя входного файла жестко, то
If ParamCount<1 then halt else Assign(f0,'in.txt');
можно сократить до
Assign(f0,'in.txt'); - это оптимизация


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 29.06.2004 12:18
Сообщение #14


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Вот что у меня получилось в файле in2.txt для твоей строки "Hwllow My wordld wholw things":

Цитата
H = 1
M = 1
W = 2
T = 1



P.S.: Извини вспылил. smile.gif Я вобще миролюбивый!
Удачи тебе в изучении TP.

P.P.S.: Вывод в файл происходит сразу всех букв с указанием сколько раз каждая встречается. Ты сможешь сам написать поиск "самой частовстречающейся буквы"? Или надо помочь?

Сообщение отредактировано: APAL - 29.06.2004 12:26


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 29.06.2004 12:21
Сообщение #15


Гость






KolDun, посмотрю дома. Завтра выложу.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 15.06.2024 18:39
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"