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

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

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

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





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

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


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

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

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


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

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

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


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

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


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





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

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


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


Пионер
**

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

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


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

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

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

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

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


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


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

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

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


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

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


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.

Или что-то похожее...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


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

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

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


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


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

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

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


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

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


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


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

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

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


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

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

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

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


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12





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

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


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

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

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

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

Спосибо заработало. Но хочу чтобы и твоя заработала.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


Гость






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

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

 





- Текстовая версия 1.12.2020 19:49
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name