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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 18:29   #1
Silverstone
Пользователь
 
Регистрация: 13.12.2011
Сообщений: 75
По умолчанию Переделать цикл. Код внутри =)

Ребятушки, нужна помощь в следующем.
Есть программа, она работает. Ее суть заключается в следующем: проверяет положение запятых и пробелов вблиз запятых.

Я реализовал это через два цикла: второй делает основную проверку, а первый прогоняет второй относительно длинны введенной строки. Вот...

Препод сказал, что ему это не нравится...Может кто помочь переделать: вместо циклов прописать while
Код:
Program ex9;
 uses crt;

var
f,d:text; x:string;  k:byte;

procedure str(var x:string);

       var i:integer; j:string;

      begin
       for k:=1 to length(x)+1 do
       begin
       j:=' ';

        while x[1]=',' do delete(x,1,1);

        while pos(',,',x)<>0 do delete(x,pos(',,',x),1);

        while pos (' ,',x)<>0 do delete (x,pos(' ,',x),1);
       end;

     {  k:=length(x);
       while k<=length(x) do}
      for k:=1 to length(x)+1 do
        for i:=1 to length(x) do
               begin
           if (x[i]=',') and (x[i+1]<>' ') then begin insert(j,x,(i+1));
        end;
      end;

     end;

begin
clrscr;

  assign(f,'D:\text.txt'); rewrite(f);
   repeat
     writeln('ўўҐ¤ЁвҐ ⥪бв');
       readln(x);
     writeln(f,x);
   until x=' ';
  close(f);

  reset(f);

  assign(d,'D:\text1.txt'); rewrite(d);
   while not eof(f) do begin
    readln(f,x);

    if pos(',',x)<>0 then
     begin
      str(x);
     end;

  writeln(d,x);
  end;
  close(d);

  close(f);
   erase(f);
   rename(d,'D:\text.txt');
end.
З.Ы- так реально нельзя реализовывать или придирки препода?
Silverstone вне форума Ответить с цитированием
Старый 21.12.2011, 19:32   #2
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию !

Цитата:
Сообщение от Silverstone Посмотреть сообщение
Код:
Program ex9;
 uses crt;
var
   f,d:text; 
   x:string;  
   k:byte;

procedure str(var x:string);
var 
   i:integer; 
   j:string;
begin
   for k:=1 to length(x)+1 do
   begin
      j:=' ';
      while x[1]=',' do
         delete(x,1,1);
      while pos(',,',x)<>0 do 
         delete(x,pos(',,',x),1);
      while pos (' ,',x)<>0 do 
         delete (x,pos(' ,',x),1);
   end;
   k:=1;
   while k<=length(x)+1 do
   begin
      i:=1;
      while i<=length(x) do
      begin
         if (x[i]=',') and (x[i+1]<>' ') then
            insert(j,x,(i+1));
         inc(i);
      end;
      inc(k);
   end;
begin
   clrscr;
   assign(f,'D:\text.txt'); rewrite(f);
   repeat
      writeln('ўўҐ¤ЁвҐ ⥪бв');
      readln(x);
      writeln(f,x);
   until x=' ';
  close(f);
  reset(f);
  assign(d,'D:\text1.txt'); 
  rewrite(d);
  while not eof(f) do 
  begin
     readln(f,x);
     if pos(',',x)<>0 then
        str(x);
     writeln(d,x);
  end;
  close(d);
  close(f);
  erase(f);
  rename(d,'D:\text.txt');
end.
З.Ы- так реально нельзя реализовывать или придирки препода?
Проверь! Думаю так.
Помог - жми на весы!
ByAlex89@mail.ru

Последний раз редактировалось ByAlex; 21.12.2011 в 19:34.
ByAlex вне форума Ответить с цитированием
Старый 21.12.2011, 20:00   #3
Silverstone
Пользователь
 
Регистрация: 13.12.2011
Сообщений: 75
По умолчанию

Up)
Все правильно, ругается на мелкоту, но она не мешает ходу программы. Спасибо!

И все-таки: мой первый вариант был допустим? Если нет, то почему?

Последний раз редактировалось Silverstone; 21.12.2011 в 20:05.
Silverstone вне форума Ответить с цитированием
Старый 21.12.2011, 21:02   #4
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от Silverstone Посмотреть сообщение
Up)
Все правильно, ругается на мелкоту, но она не мешает ходу программы. Спасибо!

И все-таки: мой первый вариант был допустим? Если нет, то почему?
Был допустим, просто преподу, видать, нужно было с While! Кстати, у тебя там еще остался цикл с For, измени по аналогии, если нужно.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 21.12.2011, 22:12   #5
Silverstone
Пользователь
 
Регистрация: 13.12.2011
Сообщений: 75
По умолчанию

Цитата:
Сообщение от ByAlex Посмотреть сообщение
Был допустим, просто преподу, видать, нужно было с While! Кстати, у тебя там еще остался цикл с For, измени по аналогии, если нужно.
да если бы это нужно было...Препод просто говорит, что это не правильно)
Silverstone вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цикл for i:=0 to count -1 do. Уменьшать счётчик i внутри цикла... Человек_Борща Общие вопросы Delphi 10 01.07.2011 21:11
Нахождение слов-анаграмм, Ошибка выдается. Задание внутри. Код внутри. TYMON Общие вопросы .NET 2 22.11.2010 21:07
Прошу помочь переделать.Код внутри.С++ BackSlash Помощь студентам 1 10.01.2010 20:36
Как переделать код? P®o©omp@s Помощь студентам 2 26.10.2009 19:21
Переделать код Hepri Работа с сетью в Delphi 3 20.08.2009 20:28