Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Генерация чисел


Автор: oberonmce 3.5.2006, 23:19
Нужно сгенерировать x от 0000 до 9999 и вставить его надо вот в такой вид:
axb , например где a=7222 b=mama и все это в текстовый файл:
а итог должен быть таков:
72220000mama
72220001mama
72220002mama
.......................
72229999mama 

Автор: volvo877 3.5.2006, 23:58
oberonmce, в чем проблема?

Или проходи одним циклом от 0 до 9999 (но будет проблема с преобразованием в 4-х символьную строку, это будет занимать время), или 4 цикла:
Код
Var ch_1, ch_2, ch_3, ch_4: Char;
...
Assign(f_out, 'f.txt');
Rewrite(f_out);

For ch_1 := '0' to '9' do
  For ch_2 := '0' to '9' do
    For ch_3 := '0' to '9' do
      For ch_4 := '0' to '9' do
        WriteLn(f_out, a, ch_1+ch_2+ch_3+ch_4, b);
Close(f_out);
 

Автор: Romikgy 4.5.2006, 00:08
Код

type tstr = string;{array [1..4] of char;}
var i: integer;

function int2str(const x: integer): string;
var i,t: integer;
sx: tstr;
begin
 sx:='0000';
 t:=x;
 for i:=4 downto 1 do
  begin
   sx[i]:=chr($30+(t mod 10));
   t:=t div 10;
  end;
  int2str:=sx
end;

begin
  for i:=0 to 9999 do
  begin
    write('7222');
    write(int2str(i));
    writeln('mama');
  end;
end.
 

Автор: oberonmce 4.5.2006, 16:59
Цитата(Romikgy @ 4.5.2006,  00:08)
Код

type tstr = string;{array [1..4] of char;}
var i: integer;

function int2str(const x: integer): string;
var i,t: integer;
sx: tstr;
begin
 sx:='0000';
 t:=x;
 for i:=4 downto 1 do
  begin
   sx[i]:=chr($30+(t mod 10));
   t:=t div 10;
  end;
  int2str:=sx
end;

begin
  for i:=0 to 9999 do
  begin
    write('7222');
    write(int2str(i));
    writeln('mama');
  end;
end.

Работает вродебы замечательно только в текстовый файл он не записывает результат!!! 

Автор: volvo877 4.5.2006, 17:11
Цитата(oberonmce @  4.5.2006,  16:59 Найти цитируемый пост)
Работает вродебы замечательно только в текстовый файл он не записывает результат!!!  
А ты ВСЕГДА только последний ответ смотришь? Тогда предупреждай об этом... Я тогда буду удалять свои посты, после которых кто-то другой дает некорректное решение... 

Автор: oberonmce 4.5.2006, 17:15
Цитата(volvo877 @ 3.5.2006,  23:58)
oberonmce, в чем проблема?

Или проходи одним циклом от 0 до 9999 (но будет проблема с преобразованием в 4-х символьную строку, это будет занимать время), или 4 цикла:
Код
Var ch_1, ch_2, ch_3, ch_4: Char;
...
Assign(f_out, 'f.txt');
Rewrite(f_out);

For ch_1 := '0' to '9' do
  For ch_2 := '0' to '9' do
    For ch_3 := '0' to '9' do
      For ch_4 := '0' to '9' do
        WriteLn(f_out, a, ch_1+ch_2+ch_3+ch_4, b);
Close(f_out);

Я не силен в Pascal, вы не могли бы написать полный исходный код!!! 

Автор: SoWa 4.5.2006, 21:05
Код

const 
a='7222';
b='mama'
Var ch_1, ch_2, ch_3, ch_4: Char;
f_out: text;

begin
    
Assign(f_out, 'f.txt');
    
Rewrite(f_out);
    
For ch_1 := '0' to '9' do
  For ch_2 := '0' to '9' do
    For ch_3 := '0' to '9' do
      For ch_4 := '0' to '9' do
        WriteLn(f_out, a, ch_1+ch_2+ch_3+ch_4, b);
    
Close(f_out);

Устраивает?!
Кстати, комментарий: В параметрах Writeln не обязательно вроде указывать переменную файла. По умолчанию запись будет идти в файл. 

После исправления:
oberonmce, код иногда читай и объявляй переменные. Все за тебя мы не сделаем. 

Автор: oberonmce 4.5.2006, 21:38
Цитата(SoWa @ 4.5.2006,  21:05)
Код

const 
a='7222';
b='mama'
Var ch_1, ch_2, ch_3, ch_4: Char;
f_out: text;

begin
    
Assign(f_out, 'f.txt');
    
Rewrite(f_out);
    
For ch_1 := '0' to '9' do
  For ch_2 := '0' to '9' do
    For ch_3 := '0' to '9' do
      For ch_4 := '0' to '9' do
        WriteLn(f_out, a, ch_1+ch_2+ch_3+ch_4, b);
    
Close(f_out);

Устраивает?!
Кстати, комментарий: В параметрах Writeln не обязательно вроде указывать переменную файла. По умолчанию запись будет идти в файл. 

После исправления:
oberonmce, код иногда читай и объявляй переменные. Все за тебя мы не сделаем.


Всем большое спасибо кто помог!!!
Тему можно считать закрытой, только end надо написать с точкой в конце т.е. последняя строчка end. !!! 

Автор: APAL 6.5.2006, 00:14
Цитата(SoWa @ 4.5.2006,  21:05)
Кстати, комментарий: В параметрах Writeln не обязательно вроде указывать переменную файла. По умолчанию запись будет идти в файл. 

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)