Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отобразить треугольник паскаля, в граф. режиме, пакет borland c 3., 
V
    Опции темы
Aver91
  Дата 12.5.2009, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.5.2009

Репутация: нет
Всего: нет



опять столкнулся с проблемой. стоит задача : на экран  в графическом режиме вывести первые N строк "треугольника Паскаля" в следующем виде:
                                 1
                               1  1
                             1  2  1
                           1  3   3  1
                         1  4   6   4  1
                      1  5  10 10  5  1
                     ...........................
в этом треугольнике крайние числа равны 1, а каждое внутреннее - сумме двух чисел над ним.

вот что пытался сделать:
Код

#include <graphics.h>
#include <stdio.h>
#include <alloc.h>
#include <string.h>
void main()
{int a,b,i,g=10,k;
int grdrv=DETECT,grmod;

char *str;
int *m,*vm;
/*int vm[30],m[30];
char str[50]; */
m=(int*) calloc(3,2);
vm=(int*) calloc(3,2);
str=(char*) calloc(1,1);
initgraph(&grdrv,&grmod," ");
setcolor(3);
settextstyle(0,0,1);
cleardevice();
for(i=0;i<10;i++)
{if(i==0)
 {m[0]=1;
 sprintf(str,"1");
 outtextxy(200,190+i*g,str);}
 if(i==1)
 {m[i]=1;
  vm[i]=1;
  vm[i-1]=m[i-1];
  sprintf(str,"%d %d",m[0],m[1]);
  outtextxy(200/*-0.75*i*5*/,190+2*(i)*g,str);}
 if(i==2)
 {m[0]=1;
  sprintf(str,"%d ",m[0]);
  outtextxy(200/*+3*k*g*/,190+2*(i)*g,str);
   m[1]=2;
   m[i]=1;
   vm[0]=1;
   vm[1]=2;
   vm[2]=m[i];
   sprintf(str,"1 2 1");
   outtextxy(200,190+2*(i)*g,str);}
 if(i>=3)
 {m[0]=1;
  sprintf(str,"%d ",m[0]);
  outtextxy(200/*+1.05*k*g*/,190+2*(i)*g,str);
  for(k=1;k<i;k++)
  {m=(int*) realloc(m,sizeof(int)+k);
   vm=(int*) realloc(vm,sizeof(int)+k);
   str=(char*) realloc(str,sizeof(char)+k);
   m[k]=vm[k]+vm[k-1];
   sprintf(str,"%d  ",m[k]);
   outtextxy(200+1.9*k*g,190+2*(i)*g,str);}

  sprintf(str,"%d ",1);
  outtextxy(200+1.9*k*g,190+2*(i)*g,str);
  for(k=0;k<(i);k++)
  {vm[k]=m[k];}
  //vm[0]=1;
}
}

scanf(" ");


closegraph();
free(m);
free(vm);
free(str);
}


не могу понять в чем ошибка. на некотором шаге происходит переход в "левую" ячейку памяти и на экране абракадабра появляется smile 
PM MAIL   Вверх
Aver91
Дата 12.5.2009, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.5.2009

Репутация: нет
Всего: нет



извиняюсь, что рано запаниковал. задача решена. 
Код

#include <string.h>
#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main()
{int grdrv=DETECT,grmod;
int a[10][10];
int i,j,g=10;
char *substr,*str;
char nul[]="\0";
substr=(char*)calloc(10,1);
str=(char*)calloc(10,1);
initgraph(&grdrv,&grmod," ");
setcolor(3);
settextstyle(0,0,1);
cleardevice();
a[0][0]=1;
for(i=0;i<10;i++)
{for(j=0;j<=i;j++)
 {if((i==j)||(j==0))
 {a[i][j]=1;}
  else
  {a[i][j]=a[i-1][j-1]+a[i-1][j];}
 }
}

for (i=0;i<10;i++)
{for (j=0;j<=i;j++)
 {sprintf(substr,"%3d ",a[i][j]);
  strcat(str,substr);}
  outtextxy(300-15*j,150+2*i*g,str);
  strcpy(str,nul);
}
getch();
free(substr);
free(str);
closegraph();
}


как пример вот
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.