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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2015, 22:09   #1
veraivanova
Новичок
Джуниор
 
Регистрация: 18.06.2015
Сообщений: 1
Восклицание Создание риунка из цифр в Паскаль

Нужно создать прогу, которая будет строить цифры по типу как изображено на риунке Сохраненное изображение 2015-6-18_20-23-56.250.jpg.
Возникают некоторые проблемы с последней строкой.
Вот текст проги:
Код:
program Project1;
uses crt;
var i,j,N,m: Integer;

begin
write('N=');
read(N);
i:=1;

begin
write(' ':i);
for j:=1 to N do
begin
Write(i);
end;
writeln;
end;
begin
i:=i+1;
while i<=round(N/2) do
begin
write(' ':i);
for j:=i to (N-i) do
begin
write(i);
end;
i:=i+1;
writeln;
end;
end;
begin
m:=trunc(N/2);
repeat
begin
write(' ': (m-1));
for j:=i to (j+3) do
begin
write(i);
end;
writeln;
i:=i+1;
m:=m-1;
end;
until i>N;
end;

Readkey;
end.
Помогите, пожалуйста, найти и устранить ошибку.

Последний раз редактировалось Вадим Мошев; 19.06.2015 в 00:42.
veraivanova вне форума Ответить с цитированием
Старый 18.06.2015, 23:49   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Осторожно извращение
Код:
var
  i, j, k, n: integer;
begin
  n := 7;
  for i := 1 to n do begin
    k := abs(  n - 2 * i + 2 * (1 - i div (n div 2 + 1))  );
    write('':(n-k) div 2);
    for j := 1 to k do write(i);
    writeln;
  end;
  readln;
end.
eoln вне форума Ответить с цитированием
Старый 18.06.2015, 23:59   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

начало
Код:
function GetFuckingLine(const c: char; const count, shift: integer): string;
var
  idx: integer;
  buf: string; // result
begin
  for idx:= 0 to shift - 1 do buf:= buf + ' ';
  for idx:= 0 to count - 1 do buf:= buf + c;
  GetFuckingLine:= buf; // result
end;
Ахтунг! Аттеншн! Внимание! Увага!!! SHIT-CODE detected!!! Не отлаживал, писал на заборе!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.06.2015, 01:06   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Мне кажется, или это рекурсия?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.06.2015, 10:21   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

А у меня получилось так
Код:
function NewStr(n,m: integer; ch1, ch2: char): string;
var s1, s2 : string;
         i : integer;
begin
   s1 := ''; s2 := '';
   for i := 1 to n do s1 := s1 + ch1;
   for i := 1 to m do s2 := s2 + ch2;
   NewStr := s1 + s2 + s1;
end;

var k, m, n : integer;
   ch1, ch2 : char;
begin
   write('K = '); readln(k);
   n := -1;
   if (NOT odd(k)) then {чет?}
      m := k + 3        {делаем нечет}
   else
      m := k + 2;
   ch1 := ' '; ch2 := '0'; {вместо пробела можно другой символ}

   while m >= 3 do {туда}
   begin
      inc(n); dec(m,2); ch2 := succ(ch2);
      writeln(NewStr(n, m, ch1, ch2));
   end;

   while m < k do {обратно}
   begin
      dec(n); inc(m,2); ch2 := succ(ch2);
      writeln(NewStr(n, m, ch1, ch2));
   end;
   readln; {смотрим}
end.

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 19.06.2015, 11:46   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Мне кажется, или это рекурсия?
Вам показалось, тут нет никакой рекурсии.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.06.2015, 12:10   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Вам показалось, тут нет никакой рекурсии
Вам показалось, вот она родимая
Код:
uses Math;
procedure F(n, k : Integer);
begin
	if n = 2*k then Exit;
	WriteLn(StringOfChar(Chr(48+n), Abs(k-n)*2+1):max((2*k-n), n));
	F(n+1, k)
end;

begin
	F(1, 4)
end.
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль вывод цифр в порядке убывания. Escada Помощь студентам 7 10.12.2012 22:49
Определить сколько цифр в числе (Паскаль) Ромиk Помощь студентам 3 05.10.2011 19:57
Паскаль(сумма произведений цифр) engl Помощь студентам 2 28.12.2009 22:50
(Паскаль)Найти произведение цифр, встречающихся в строке Doublefaced Помощь студентам 24 24.06.2009 18:25
Перестановка цифр в целом числе. Паскаль. Cheetah Помощь студентам 5 16.10.2008 21:07