[ Foro de C ]

Problema con un Parcial de C

03-Dec-2017 04:23
Invitado (Azael)
1 Respuestas

Hola a todos, me gustaria hacerles una consulta de un parcial de C que rendí hace poco y no pude resolver ya que todavia soy nuevo en esto de la programación.

Consiste en esto:
Dada una matriz nxn a elección por el usuario(máximo 10), mostrar en pantalla la cantidad de números perfectos ubicados en los sectores donde i+j sea igual a un numero par. Los números del interior de la matriz también deben ser ingresados por el usuario.
Un número perfecto es un número natural que es igual a la suma de sus divisores propios positivos.

Este es mi codigo:


#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
int main() {
	
	int i, j, filas, columnas, a, sum=0, mul=0, c=0;
	
	printf ("Introduzca el numero de filas : ");
	scanf ("%i",&filas);
	printf ("\nIntroduzca el numero de columnas : ");
	scanf  ("%i",&columnas);
	
	int matriz[filas][columnas];
	
	for (i=1; i<filas+1; i++)
	{
		for (j=1; j<columnas+1; j++)
		{
			printf("Escriba un numero para la posicion [%i][%i] de la matriz ", i,j); 
			scanf("%i", &matriz[i][j]);
			
			if((matriz[i][j])%2 == 0)
			{
				for(a=1; a<matriz[i][j]; a++)
				{
					mul=matriz[i][j]%a;
					if(mul==0)
					{
						sum+=a;
					}
					else{}
				}
				if(sum==matriz[i][j])
				{
					c++;
				}
				else{}
			}
			else{}
		}
	}
	printf("%i",c);
	scanf("%i",&c);
	return 0;
}


Desde ya muchas gracias!


26-Dec-2017 10:00
Nacho Cabanes (+84)

Hay algunos errores. Por ejemplo, te piden las posiciones en las que i + j sea par, es decir "(i+j)%2 == 0), cuando tú haces "if((matriz[i][j])%2 == 0)". En cualquier caso, ¿te permiten crear funciones? Eso, junto con nombres de variables más descriptivos o algún comentario, ayudaría a hacer el programa más legible y, a la vez, a que tú mismo localizaras los fallos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)