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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 02:32   #1
Mirt
Пользователь
 
Регистрация: 12.10.2010
Сообщений: 10
По умолчанию Программа должна оставить всего две строки! [Pascal ABC]

Создаем папку ( к примеру Pascal ABC) в эту папку сохраняем вот это под названием Program1.pas

Код:
uses crt;
var f, g: text;
  s, s1, s2: string;
  i, k, t, c: integer;
begin
  clrscr;
  assign(f, 'file1.txt');
  reset(f);
  assign(g, 'file2.txt');
  rewrite(g);
  while not eof(f) do
  begin
    readln(f, s); {читаем строку}
    s1 := s + ' '; {создаем вспомогательную, над ней измываться будем, добавим к ней пробел}
    while pos(' *', s1) > 0 do {на всякий случай удалим лишние пробелы}
      delete(s1, pos(' *', s1), 1); {если не нужно, уберите эти 2 строки из кода}
    i := 0; k := 0; {счетчики чисел и совпадений их с номером}
    while pos(' ', s1) > 0 do {пока есть пробелы}
    begin
      s2 := copy(s1, 1, pos(' ', s1) - 1); {читаем первое слово}
      val(s2, t, c); {преобразуем в число}
      i := i + 1; {считаем}
      if t = i then k := k + 1; {если совпало число со своим номером, считаем}
      delete(s1, 1, pos(' ', s1)); {удаляем его с пробелом, следующее число первое}
    end;
    if k = 0 then writeln(g, s); {если на разу не совпало, в новый файл}
  end;
  close(f);
  close(g);
  write('Fail perepisan!');
  readln
end.
В этой же папке нужно создать два текстовых файла:
1. file1.txt
2. file2.txt


В первом текстовом файле записать
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

Запустить программу. И программа должна оставить только строки :
2 1 3
3 1 2
Которые она запишет во втором текстовом файле.





Уже ввел миллион комбинаций и все равно не могу получить положительный результат.
Я думаю что загвоздка вод здесь :

Код:
i:=i+1;{считаем} i+ надо вставить число
if t=i then k:=k+1;{если совпало число со своим номером, считаем} к+ надо вставить число
delete(s1,1,pos(' ',s1));{удаляем его с пробелом, следующее число первое}
end;
if k=0 then writeln(g,s);{если на разу не совпало, в новый файл} к= надо вставить число


Пожалуйста!!!! Помогите разобраться!!!!


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.12.2010 в 08:00.
Mirt вне форума Ответить с цитированием
Старый 07.12.2010, 08:00   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) Какой критерий отбора строк? Сформулируйте исходное задание!

2) а это что за "чудо": pos(' *',s1)... Что за звёздочка?! o_O
не вижу, чтобы у Вас были звёздочки в вашем файле!

3) отформатировал исходный код, добавив туда отступы.
Согласитесь, что так намного нагляднее и удобнее!
Не забывайте делать отступы при написании программы,
это, в первую очередь, Вам же и поможет!

Последний раз редактировалось Serge_Bliznykov; 07.12.2010 в 08:02.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal or Pascal ABC Ikram Паскаль, Turbo Pascal, PascalABC.NET 0 27.04.2010 13:44
Как оставить только нужные строки? Palantir Microsoft Office Excel 6 18.03.2010 12:36
Pascal ABC ArcaN0id Помощь студентам 8 07.12.2009 15:24
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27