Bigboss98
13-06-2015, 19:56
Sto cercando di creare il grafico della tartaruga in C solo che incontro un errore di segmentazione.
Potreste aiutarmi
#include <stdio.h>
#define SIZE_ROW 50
#define SIZE_COLUMN 50
int draw ( int pen , int position , int grafico[][SIZE_COLUMN] , int move , int current_row , int current_column );//function prototype
int print ( int grafico[][SIZE_COLUMN] );//function prototype
int main ( void )
{
int grafico[SIZE_ROW][SIZE_COLUMN];//declare the array where there is the graphic
int command = 1;//declare the variables where you put the command
int move;
int pen = 1;
int position = 7;
int current_row = 0;
int current_column = 0;
while (command != 9)
{
printf("Comando:");
scanf("%d",&command);
switch ( command )
{
case 5:
printf("Movimento:");
scanf("%d",&move);
grafico[SIZE_ROW][SIZE_COLUMN] = draw ( pen , position , grafico[SIZE_ROW][SIZE_COLUMN] , move , current_row , current_column );
break;
case 6:
print ( grafico[SIZE_ROW][SIZE_COLUMN]); // call function print
break;
case 9:
break;
}
}
printf("The END");//the end of the programm
return 0;
}
int draw ( int pen , int position , int grafico[][SIZE_COLUMN] , int move , int current_row , int current_column )
{
int x;
int y;
if (pen == 2)
{
switch (position )
{
case 3:
for (x = current_row ;x > move ;x--)
{
if ( current_row > 0 && x < SIZE_COLUMN)
{
grafico[x][current_column] = 1;
}
else
{
break;
}
}
break;
case 4:
for ( x = current_row;x < move;x++)
{
if (current_row > 0 && x < SIZE_COLUMN )
{
grafico[x][current_column] = 1;
}
else
{
break;
}
}
break;
case 7:
for ( x = current_column;x > move;x--)
{
if (current_column > 0 && x < SIZE_COLUMN )
{
grafico[current_row][x] = 1;
}
else
{
break;
}
}
break;
case 8:
for ( x = current_column;x < move;x++)
{
if ( current_column > 0 && x < SIZE_COLUMN )
{
grafico[current_row][x] = 1;
}
else
{
break;
}
}
break;
}
}
else
{
switch (position )
{
case 3:
for (x = current_row;x > move;x--)
{
if ( current_row > 0 && x < SIZE_COLUMN)
{
grafico[x][current_column] = 0;
}
else
{
break;
}
}
break;
case 4:
for ( x = current_row;x < move;x++)
{
if ( current_row > 0 && x < SIZE_COLUMN)
{
grafico[x][current_column] = 0;
}
else
{
break;
}
}
break;
case 7:
for ( x = current_column;x > move;x--)
{
if (current_column > 0 && x < SIZE_COLUMN )
{
grafico[current_row][x] = 0;
}
else
{
break;
}
}
break;
case 8:
for ( x = current_column;x < move;x++)
{
if ( current_column > 0 && x < SIZE_COLUMN)
{
grafico[current_row][x] = 0;
}
else
{
break;
}
}
break;
}
}
return grafico[SIZE_ROW][SIZE_COLUMN];
}
int print ( int grafico[SIZE_ROW][SIZE_COLUMN] )
{
int x = 0;
int y = 0;
for ( x = 0;x < SIZE_ROW;x++)
{
for ( y = 0; y < SIZE_COLUMN;y++)
{
if ( grafico[x][y] == 1)
{
printf("*");
}
}
}
}
Potreste aiutarmi
#include <stdio.h>
#define SIZE_ROW 50
#define SIZE_COLUMN 50
int draw ( int pen , int position , int grafico[][SIZE_COLUMN] , int move , int current_row , int current_column );//function prototype
int print ( int grafico[][SIZE_COLUMN] );//function prototype
int main ( void )
{
int grafico[SIZE_ROW][SIZE_COLUMN];//declare the array where there is the graphic
int command = 1;//declare the variables where you put the command
int move;
int pen = 1;
int position = 7;
int current_row = 0;
int current_column = 0;
while (command != 9)
{
printf("Comando:");
scanf("%d",&command);
switch ( command )
{
case 5:
printf("Movimento:");
scanf("%d",&move);
grafico[SIZE_ROW][SIZE_COLUMN] = draw ( pen , position , grafico[SIZE_ROW][SIZE_COLUMN] , move , current_row , current_column );
break;
case 6:
print ( grafico[SIZE_ROW][SIZE_COLUMN]); // call function print
break;
case 9:
break;
}
}
printf("The END");//the end of the programm
return 0;
}
int draw ( int pen , int position , int grafico[][SIZE_COLUMN] , int move , int current_row , int current_column )
{
int x;
int y;
if (pen == 2)
{
switch (position )
{
case 3:
for (x = current_row ;x > move ;x--)
{
if ( current_row > 0 && x < SIZE_COLUMN)
{
grafico[x][current_column] = 1;
}
else
{
break;
}
}
break;
case 4:
for ( x = current_row;x < move;x++)
{
if (current_row > 0 && x < SIZE_COLUMN )
{
grafico[x][current_column] = 1;
}
else
{
break;
}
}
break;
case 7:
for ( x = current_column;x > move;x--)
{
if (current_column > 0 && x < SIZE_COLUMN )
{
grafico[current_row][x] = 1;
}
else
{
break;
}
}
break;
case 8:
for ( x = current_column;x < move;x++)
{
if ( current_column > 0 && x < SIZE_COLUMN )
{
grafico[current_row][x] = 1;
}
else
{
break;
}
}
break;
}
}
else
{
switch (position )
{
case 3:
for (x = current_row;x > move;x--)
{
if ( current_row > 0 && x < SIZE_COLUMN)
{
grafico[x][current_column] = 0;
}
else
{
break;
}
}
break;
case 4:
for ( x = current_row;x < move;x++)
{
if ( current_row > 0 && x < SIZE_COLUMN)
{
grafico[x][current_column] = 0;
}
else
{
break;
}
}
break;
case 7:
for ( x = current_column;x > move;x--)
{
if (current_column > 0 && x < SIZE_COLUMN )
{
grafico[current_row][x] = 0;
}
else
{
break;
}
}
break;
case 8:
for ( x = current_column;x < move;x++)
{
if ( current_column > 0 && x < SIZE_COLUMN)
{
grafico[current_row][x] = 0;
}
else
{
break;
}
}
break;
}
}
return grafico[SIZE_ROW][SIZE_COLUMN];
}
int print ( int grafico[SIZE_ROW][SIZE_COLUMN] )
{
int x = 0;
int y = 0;
for ( x = 0;x < SIZE_ROW;x++)
{
for ( y = 0; y < SIZE_COLUMN;y++)
{
if ( grafico[x][y] == 1)
{
printf("*");
}
}
}
}