Alguien que me revise esto y me diga si esta bien

Iniciado por creiko, 11 Mayo 2016, 17:25 PM

0 Miembros y 1 Visitante están viendo este tema.

creiko

#include"stdlib.h"
#include"conio.h"
#include"time.h"
#include"iostream"

int main()
{
int i,j,opc,num,a,n,p=0;
printf("PROGRAMA MATRIZ CON MENU \n\n");
printf("Digite la cantidad de filas y columnas en la matriz (solo positivos) \n\n");
scanf("%d",&num);

int x[num][num];

int l=num+1;

srand(time(NULL));
if(num>0)
{
printf("                     MENU                  \n\n");
printf("*    Elija Una Opcion \n\n");
printf("1. Colocar cero en ambas diagonales de la matriz \n");
printf("2. Colocar cero en la primera y la última fila, y en la primera y la última columna de la matriz \n");
printf("3. Llenar de números la matriz de tal forma que mat[i][j] sea igual a i+j. \n");
printf("4. Llenar la diagonal principal de la matriz con los números 1,2,...N \n");
printf("5. Llenar todas las filas pares con los números 1,2,3,...N, y las filas impares con los números N,N-1,N-2,...1. \n");
printf("\n\n");
printf("La opcion escojida es la numero: \n");
scanf("%d",&opc);
printf("\n\n");
switch(opc)
{
case 1:
for(i=1;i<=num;i++)
{
for(j=1;j<=num;j++)
{
if(i==j)
           {
           x[i][j]=0;
           
           }
            else
               if(i==l-j)
           {
           x[i][j]=0;
           }
            else
            {
               x[i][j]=1+rand()%(9);
               }
}
}
           
for(i=1;i<=num;i++)
{
for(j=1;j<=num;j++)
{
                printf("%d ",x[i][j]);
}
printf("\n");
}
break;

case 2:
for(i=1;i<=num;i++)
{
for(j=1;j<=num;j++)
{
if(i==1)
{
x[i][j]=0;
}
else
if(j==1)
{
x[i][j]=0;
}
else
if(i==num)
{
x[i][j]=0;
}
else
if(j==num)
{
x[i][j]=0;
}
else
{
x[i][j]=1+rand()%(9);
}
}
}

for(i=1;i<=num;i++)
{
  for(j=1;j<=num;j++)
  {
    printf("%d ",x[i][j]);
   }
   printf("\n");
}
break;

case 3:
for(i=1;i<=num;i++)
{
printf("\n\n");
for(j=1;j<=num;j++)
{
x[i][j]=i+j;
printf(" %d ",x[i][j]);
}
}
break;

case 4:
for(i=1;i<=num;i++)
{
for(j=1;j<=num;j++)
{
if(i==j)
           {
           x[i][j]=0+j;
           }
           
            else
            {
               x[i][j]=1+rand()%(9);
               }
}
}
           
for(i=1;i<=num;i++)
{
for(j=1;j<=num;j++)
{
                printf("%d ",x[i][j]);
}
printf("\n");
}
break;

case 5:
for (i=1;i<=num;i++)
 {
  p=0;
a=1;
for(j=1;j<=num;j++)
 {
  if(i %2==0)
 {
 
  x[i][j]=a;
a++;
 }
 else
 {
  x[i][j]=num-p;
  p++;
 }
}
 }
 
 for(i=1;i<=num;i++)
 {
  for(j=1;j<=num;j++)
 {
  printf("%d",x[i][j]);
 }
 printf("\n");
}
break;

default:
printf("Opcion no valida");
break;
}
}
}



Mod: Los códigos deben ir en etiquetas GeSHi

abaadoon

#1
esta mal amigo eso quedaria asi
#include"stdlib.h"
#include"conio.h"
#include"time.h"
#include"iostream"
#define NUM 50
int main()
{
  int i,j,opc,num,a,n,p=0;
  printf("PROGRAMA MATRIZ CON MENU \n\n");
  printf("Digite la cantidad de filas y columnas en la matriz (solo positivos) \n\n");
  scanf("%d",&num);
 
  int x[NUM][NUM];
 
  int l=num+1;
 
  srand(time(NULL));


ETC..........
jajajjajaj ya no le sigo por que yo tambien e venido a este foro a pedir ayuda :)


Mod: Los códigos deben ir en etiquetas GeSHi, 3ra advertencia

AlbertoBSD

Muy buen dia.

A opcion que te mostraron anteiormente es valida pero lo limita a una matriz de 50 x 50.

Tu linea

int x[num][num];

No es valida en tiempo de ejecucion. por que el compilador necesita saber a priori cuanta memoria reservar. De lo contrario tienes que usar memoria dinamica para ello.

int *x = calloc(num*num,sizeof(int));

Y el acceso a la matriz se debe de hacer de forma mas o menos asi.

y = x[fila*num+ columna];
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW