ВОПРОС · Q&A

Файл

6 ответов 5,5 тыс.
AI-выжимка обсуждения скоро

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

Статус
Закрыто для дальнейших ответов.
Автор вопроса
Дан текстовый файл f.Удалить из файлы все слова,которые состоят из одних и тех же букв.
Вот что я написал!!Ошибок нет но не удаляет!!!!
код:
Код:
var
f:text;
s:array[1..100] of string;
k,i,a,b,v:integer;
found:boolean;
begin
assign(f,'file.txt');
reset(f);
while not eof (f) do
begin
k:=k+1;
read(f,s[k]);
end;
for i:=1 to k-1 do
for a:=i+1 to k do
begin
for b:=1 to length(s[i]) do
for v:=1 to length(s[a]) do
begin
if s[i][b] = s[a][v] then
found:=true
else found:=false;
end;
if found=true then
s[i]:='';
s[a]:='';
end;
close(f);
end.

Посоветуйте что надо делать???Или хотя бы как!!!
 
наскока я понял то вы только считываете из файла и коректируете считаное,а потом обратно в файл коректировку не заносите(масив s запишите в файл)

P.S. Правильно оформляйте код, так более четабельно и красивей
 
А вы задание поняли, количество и порядок букв должны учитываться?
Удалить из файлы все слова,которые состоят из одних и тех же букв.
получается, каждое слово в файле в отдельной строке?
В варианте исх. данных:
aaab
ab
abaa
bab
1) должен остаться пустой файл (т.к. используются одинаковые буквы a и b )
2) или
ab
bab
(с учетом кол-ва)
3) или весь исходный файл (с учетом кол-ва и порядка букв)?
В зависимости от этого и правьте код...

А вот это не совсем понятно - потерян begin-end?
if found=true then
s:='';
s[a]:='';
 
нет не в каждой строке разное расположение!!!Но всёровно не удаляет или не заменяет чё надо сделать помогите!!!

Добавлено:
if found=true then
begin
s:='';
s[a]:='';
end;

А это не удаление???Заменяет слова на пустое место!!!
 
нет не в каждой строке разное расположение!!!
хм... не поняла, это ответ на какой из моих вопросов?
вопрос a) - про то, что каждое слово в одной строке (т.е. слово = строка)
вопроос б) - какой из вариантов является правильным решением для заданных исходных данных?
мне лично задание пока не понятно, вы так и не рассказали, а хотите, чтоб мы исправили.
ошибка скорее всего, в этом блочке:
if s = s[a][v] then
found:=true
else found:=false;

Я могу попытаться написать, что вы делаете:
здесь вы сравниваете 1-й символ одной строки (например, а) со всеми другой и, только если они полностью одинаковы (2-я строка типа аааааа) или последний символ строки равен 1-му символу первой строки (например, 2-я строка типа bbbbbbbba), то у Вас found:=true. Если вторая строка вида abb, то у Вас found станет false при b=1 при просмотре 2-го и т.д. символа 2-й строки (v=2, 3,...). Где логика?
и аналогичная фигня написана для сравнения 2-го символа первой строки, и т.д.

Добавлено: гы) или может, вообще надо удалять слова вида: aaaaaaaaaaaaaaaaa bbbbbbbbb cc?
 
А не проще сделать так:
Делаем масив интегера для запоминания где побелы
делаем два масива стринга один копия файла, другой правим
А потом проверяем символы между пробелами тоесть слова на одинаковость и вырезаем
 
А не проще сделать так:
может, и проще выйдет. и думаю, намного правильней)
но вот если человек даже не может объяснить задачу (условие задачи), то я тут - пас)
а код немного бредовый, там не разберешься(
 
Статус
Закрыто для дальнейших ответов.