Си и DevC++ - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Проблема в следующем: Есть код:
#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++;
}
Все работает правильно(почти все), но что интересно, после цикла while(kl!=0) не хочет работать цикл for. Внутренний работает правильно, а внешний for (orbI=0;orbI<indexMAX;orbI++) проходит только один раз. Что не так, я никак не пойму. Вроде бы все правильно. Была мысль сделать через while, но это уже на самый крайний случай. Что может быть не так с этим циклом for?
АП! Проблема так и не решилась!
АП!

Решение задачи: «Си и DevC++»

textual
Листинг программы
float br = 360.0 / kl

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5