Си и DevC++ - C (СИ)
Формулировка задачи:
Всем привет! Проблема в следующем:
Есть код:
Все работает правильно(почти все), но что интересно, после цикла while(kl!=0) не хочет работать цикл for. Внутренний работает правильно, а внешний for (orbI=0;orbI<indexMAX;orbI++) проходит только один раз. Что не так, я никак не пойму. Вроде бы все правильно. Была мысль сделать через while, но это уже на самый крайний случай. Что может быть не так с этим циклом for?
#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <math.h>
int midx, midy;//центр окна
float angle=270.0,pov;//для поворота "прямой от центра
float Y,X; //определение конечных коорлинат вершины графа
int i=0,k=0,j=0; //индекс для структуры для свзи вершин, k,j - для считывания матрицы
int kl=0;//количество вершин для прорисовки
int matr[10][10];//матрица смежности, потом динамик
int orbI=0,orbJ=0;
struct index_graph//для связи матрицы смежности и визуального графа
{
int index;
struct XY1
{
float X,Y;
}XY;
}graphs[360];
void MID(void); //нахождение центра
void RIS(float br);//изначальная прорисовка вершин, без ребер
int main()
{
FILE *in, *out, *matrik;
in=fopen("input.txt","r");
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
MID();//центр окна находим
//считывание из файла кол-ва вершин и матрицы для ребер
printf("number of peek: ");
fscanf(in,"%d", &kl);
printf("%d\n",kl);
printf("The matrix of weights:\n");
for (k=0;k<kl;k++)
for (j=0;j<kl;j++)
fscanf(in,"%d",&matr[k][j]);
for (k=0;k<kl;k++)
{
for (j=0;j<kl;j++)
printf("%d ",matr[k][j]);
printf("\n");
}
float br=360/kl;
setcolor(8);
bar(midx-320, midy-240, midx+320, midy+240); //делаем бэкграунд опр цвета
setcolor(9);
moveto(midx,midy); //поставили курсов в центр
int indexMAX=kl;
while(kl!=0)//рисуем кол-во веpшин
{
RIS(br);
}
//прорисовка ребер\\
for (orbI=0;orbI<indexMAX;orbI++)
{
for (orbJ=0;orbJ<indexMAX;orbJ++)
printf("%d ",matr[orbI][orbJ]);
printf("\n");
}
getch(); //для задержки экрана
closegraph();
fclose(in);
return 0;
}
//0,0 - верхний, левый угол окна
void MID(void)
{
midx = getmaxx() / 2; //определяем центра окна
midy = getmaxy() / 2;
}
void RIS(float br) //прорисовка вершин и занесение в массив струтктур
{ //индекса и центра вершин(координаты)
moveto(midx,midy);
pov = angle / 180 * M_PI;
Y=midy+(sin(pov))*150;
graphs[i].XY.Y=Y;
X=midx+(cos(pov))*150;
graphs[i].XY.X=X;
circle(X,Y,15);
graphs[i].index=i;
angle = angle-br;
kl--; i++;
}
АП! Проблема так и не решилась!
АП!
Решение задачи: «Си и DevC++»
textual
Листинг программы
float br = 360.0 / kl