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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2008, 21:01   #1
mpegable
Пользователь
 
Регистрация: 03.05.2008
Сообщений: 13
По умолчанию Помогите решить 2 задачи на файлы (Паскаль)

Помогите решить 2 задачи на файлы (Паскаль):

1. Создать с помощью текстового редактора файл text1.txt и заполнить его словами из латинских букв(не менее 300 слов). В программе с файлом text1.txt работать как с текстовым. Использовать массив строк: выделить слова из текста и каждое слово записать в соответствующий элемент массива. Считать, что в файле слова разделены пробелом.
Вывести все слова файла text1.txt., начинающиеся с согласных букв латинского алфавита. Результат записать в файл text2.txt.

2. Создать типизированный файл number1.txt и заполнить его случайными целыми числами, принадлежащими диапазону от -100 до 100. Количество чисел в файле задается с клавиатуры. С файлом number1.txt работать как с файлом file of integer.
Найти максимальное число файла number1.txt. Вывести в файл number2.txt все числа файла number1.txt, стоящие до найденного максимального.
mpegable вне форума Ответить с цитированием
Старый 16.06.2008, 07:36   #2
mpegable
Пользователь
 
Регистрация: 03.05.2008
Сообщений: 13
Лампочка

помогите плииииииииииизз
mpegable вне форума Ответить с цитированием
Старый 16.06.2008, 08:23   #3
Дож
Новичок
Джуниор
 
Регистрация: 16.06.2008
Сообщений: 2
По умолчанию

1. С текстовым редактором возиться не буду, а код напишу
Код:
Var
F: Text;
Arr: Array[0..10000] Of String;
I, Count: Integer;
C: Char;

begin
  Assign(F, 'text1.txt');
  Reset(F);
  Count := 0;
    While Not Eof(F) do begin
      Read(F, C);
        While Not(C in [#1..#32]) do begin
          Arr[Count] := Arr[Count] + C;
          Read(F, C);
        end;
      Inc(Count);
    end;
  Close(F);

  Assign(F, 'text2.txt');
  Rewrite(F);
    For I := 0 to Count - 1 do
      If Length(Arr[I]) >= 1 then
        // Посмотри - все ли согласные я учел
        If Arr[I][1] in ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'p', 'q', 'r', 's', 't', 'm', 'n', 'w', 'x', 'z'] then
          Writeln(F, Arr[I]);
  Close(F);
end.
2. А если в файле несколько максимальных чисел? В коде ниже я искал первый из них
Код:
Var
  InF, OutF: File Of Integer;
  I, Count, Number: Integer;
  Max, MaxID: Integer;

begin
  Assign(OutF, 'number1.txt');
  Rewrite(OutF);
  Write('Enter numbers count: ');
  Readln(Count);
    For I := 0 to Count - 1 do begin
      Number := Random(201) - 100;
      Write(OutF, Number);
    end;
  Close(OutF);

  Assign(InF, 'number1.txt');
  Reset(InF);
  MaxID := 0;
  Max := -100;
    For I := 0 to Count - 1 do begin
      Read(InF, Number);
        If Number > Max then begin
          Max := Number;
          MaxID := I;
        end;
    end;

  Reset(InF);
  Assign(OutF, 'number2.txt');
  Rewrite(OutF);
    For I := 0 to MaxID - 1 do begin
      Read(InF, Number);
      Write(OutF, Number);
    end;
  Close(InF);
  Close(OutF);
end.
Дож вне форума Ответить с цитированием
Старый 16.06.2008, 09:20   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Поправка: Извини Дож, посмотрел тему, решений не было. А когда написал, не посмотрел.

На пока первую программу, будет время, сделаю вторую. Программа рабочая, проверенная. Если правильно создашь входной файл, правильно его заполнишь и обзовешь, все будет работать.
Код:
uses crt;
const gl=['A','E','I','J','O','U','Y','a','e','i','j','o','u','y'];
//берем гласные, их меньше
var f1,f2:text;
    st:array[1..250]of string;//массив строк
    n,i:integer;
begin
clrscr;
assign(f1,'Text1.txt');//связываем с переменной и открываем для чтения файл
reset(f1);
assign(f2,'Text2.txt');// связываем с переменной и открываем для записи файл
rewrite(f2);
i:=0;
while not eof(f1)do
   begin
    inc(i);//номер строки
    readln(f1,st[i]); //записываем строку в массив
    n:=2;st[i]:=' '+st[i]; //добавляем для удобства пробел в начале и смотрим со второго символа
    while n<=length(st[i])do //пока не конец строки
      begin
        //если второй символ не гласная(согласная)и перед ней пробел(т.е. это первая буква слова)
        if (not (st[i][n] in gl))and(st[i][n-1]=' ')then
          begin
 //то пока не конец слова, записываем его буквы в файл 2 и выводим на экран
            while(st[i][n]<>' ')and(n<=length(st[i])) do
              begin
               write(st[i][n]);
               write(f2,st[i][n]);
               inc(n);//переходим к следующей букве
              end;
            write(' ');//вставляем пробел между словами
            write(f2,' ');//то же в файле
           end;
         inc(n);
// увеличиваем n на 1 и автоматом переходим к следующему слову
      end;
    writeln;//новая строка
    writeln(f2,'');//пустая строка в файл, тоже новая строка
  end;
close(f1);
close(f2);
readln
end.
Добавляю и вторую, пусть заказчик выбирает.
Код:
uses crt;
var f1:file of integer;
    f2:text;
    n,i,a,max,imax,k:integer;
    m:array[1..1000]of integer;
begin
clrscr;
assign(f1,'number1.txt');
rewrite(f1);
assign(f2,'number2.txt');
rewrite(f2);
write('Vvedite kolichestvo chisel n=');
readln(n);
randomize;
for i:=1 to n do
  begin
    a:=random(201)-100;
    write(f1,a);
    write(a,' ');//выводим для контроля на экран, можно убрать
  end;
writeln;
close(f1);
reset(f1);
max:=-maxint;//минимальное число типа Integer
for i:=1 to n do
   begin
    read(f1,m[i]);//считываем числа в массив
    if m[i]>max then
      begin
        max:=m[i];
        imax:=i; //находим номер максимального
      end;
    end;
writeln('Max=',max);
for k:=1 to imax-1 do//все до макс записываем в файл 2
write(f2,m[k],' ');
close(f1);
close(f2);
readln
end.

Последний раз редактировалось puporev; 16.06.2008 в 10:03.
puporev вне форума Ответить с цитированием
Старый 16.06.2008, 10:52   #5
mpegable
Пользователь
 
Регистрация: 03.05.2008
Сообщений: 13
По умолчанию

пасиба всем за решения.
ща кликну на отзывы
mpegable вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу на файлы (Паскаль) mpegable Помощь студентам 1 02.06.2008 18:08
Помогите решить задачу на тему - Файлы. Pascal. Impulsive Паскаль, Turbo Pascal, PascalABC.NET 4 23.02.2008 11:55
Помогите решить 3 задачи на языке Турбо-Паскаль rpg Помощь студентам 3 23.11.2007 20:13