Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Паскаль Помогите.  (Прочитано 6107 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Lunik
Постоялец

ru
Offline Offline

« : 27-05-2010 14:26 » 

Подскажите пожалуйста, почему цифры не выводяться в текстовый документ gist.txt
туда должны выводиться цифры без нуля и 2
Фал с цирами прикреплен ниже.
Вот сам код
Код:
var
p,i,g:integer;
s: set of byte;    
f,l:text; ch:char;
begin
                                                        
 assign(f,'c:\trash.txt');
 reset(f);                
 assign(l,'c:\gist.txt');
 rewrite(l);
 writeln('Ishodnii text:');        
 While not eof(f) do        
   begin
   read(f,ch);
   write(ch);  
   end;
 writeln;  
 reset(f);

 writeln('Text bez 0 i 2:');
 While not eof(f) do
   begin
   read(f,ch);
   g:=ord(ch)-48;    
   if (g<>0)and(g<>2) then    
      if g=-16 then write(' ')      
               else write(g);
   end;
 reset(f);
                                          
 i:=1;        
 s:=[];
 write(l, i, ' ');      
  While not eof(f) do
   begin
   read(f,ch);
   g:=ord(ch)-48;
     if g=-16 then        
                begin
                  writeln(l);
                  p:=0;            
                  s:=[];          
                  i:=i+1;          
                  write(l, i, ' ');
                end

              else
                if not(g in s) then  
                                 begin
                                   p:=p+1;  
                                   include(s,g);
                                 end;
   end;
 writeln(l);
 close(f);      
 close(l);  
 writeln;
 writeln('Process complete!');

 readln;
 end.

* trash.txt (0.11 Кб - загружено 918 раз.)
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 27-05-2010 14:36 » 

расскажи что ты здесь делаешь
Код:
reset(f);
                                           
 i:=1;       
 s:=[];
 write(l, i, ' ');       
  While not eof(f) do
   begin
   read(f,ch);
   g:=ord(ch)-48;
     if g=-16 then       
                begin
                  writeln(l);
                  p:=0;           
                  s:=[];           
                  i:=i+1;         
                  write(l, i, ' ');
                end

              else
                if not(g in s) then 
                                 begin
                                   p:=p+1;   
                                   include(s,g);
                                 end;
   end;

Первая часть работает как задумано?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Lunik
Постоялец

ru
Offline Offline

« Ответ #2 : 27-05-2010 14:40 » new

Код не мой, девушка попросила посмотреть написала хрен знает что.
Поэтому к вам и обрашаюсь в паскале не селен сильно.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 27-05-2010 14:44 » 

Так пусть девушка и расскажет...
Телепаты в отпуске...
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Lunik
Постоялец

ru
Offline Offline

« Ответ #4 : 27-05-2010 14:45 » 

Вот так пойдет?
Код:
 i:=1;           {s4et4ik koli4estva cifr}
 s:=[];          {obnuliaem mnojestvo}
 p:=0;
 assign(l,'c:\gist.txt'); {sozdaetsya fail v ukazannom meste s ukazannim nazvaniem i raswireniem}
 rewrite(l);             {otkrivaem fail dlia zapisi}
 write(l, i, ' ');       {zapisivaem 1 dlia pervogo 4isla}
  While not eof(f) do
   begin
   read(f,ch);
   g:=ord(ch)-48;
     if g=-16 then         {esli dohodim do probela, to ponimaem 4to dalshe drugoe 4islo}
                begin
                  writeln(l, p);   {zapisivaem s4et4ik razli4nih cifr predidush. 4isla i perehodit na druguju stroku}
                  p:=0;            {obnuliaem s4et4ik}
                  s:=[];           {obnuliaem mnojestvo}
                  i:=i+1;          {s4itaet, kakoe 4islo idet po poriadku}
                  write(l, i, ' ');{zapisivaet sledujushij poriadkovii nomer}
                end

              else         {esli ne 'probel', togda s4itaem kol-vo razli4nih cifr v 4isle}
                if not(g in s) then  {esli 4islo(ot 0 do 9) ne vo mnojestve, togda}
                                 begin
                                   p:=p+1;   {uveli4ivaem s4et4ik raznih cifr na +1}
                                   include(s,g); {vkl'u4aem dannuju cifru vo mnojestvo, dabi ona ne povtorialas'}
                                 end;
   end;
 writeln(l, p);  {zapisivaem kol-vo cifr poslednego 4isla}

 close(f);       {zakrivaem otkritii logi4eskii fail}
 close(l);       {zakrivaem otkritii logi4eskii fail}
 writeln;
 writeln('Process complete!');
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #5 : 27-05-2010 15:59 » 

Lunik, а как изначально формулировалась задача? потому что тут всё - ахинения. например, в первой части можно просто написать

Код:
  if (ch <> '2') and (ch <> '0') then
    WriteLn (<...>);
,

там никакого смысла нет высчитывать байтовый код. тоже касается и второй части, всё это можно упростить до десятка строк, но для этого надо понимать, а что, собственно, изначально требовалось.
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines