Ayuda urgente con matriz DEV C++ [Ya trae código]

Iniciado por sTaborracho, 18 Octubre 2011, 22:01 PM

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

sTaborracho

Hola. Buenos dias. Disculpen la molestia quisiera saber si podrian revisar mi codigo... El programa es una matriz 3x3 en donde nosotros introducimos los 9 valores, debe imprimirse la matriz con sus cuadrantes en el orden en que ingresamos nuestros valores y al final sumar todas las cifras de la matriz... Gracias por el tiempo que se tomen en leerlo y la molestia que se tomen en ayudarme.. ya que soy nuevo en eso de programar.

Muchas Gracias a esos programadores  que comparten su conocimiento con nosotros los novatos

Citar
Esto es lo que tengo:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>

#define MAX 3

int main(void){
int matriz[MAX][MAX];
int i,j;
int valor;
int suma=0;
int edo;
int var=0;
pid_t pid;
for (i=0;i<MAX;i++)
{
for (j=0;j<MAX;j++)
{
printf("Introduce el valor para la fila %d columna %d: ",i+1,j+1);
scanf("%d", &valor);
matriz [j]=valor;
}
}

for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++)
{
printf(" %d", matriz [j]);
}
printf("\n");
}

for(i=0;i<3;i++)
{
if((pid=fork()==0))
{
for(j=0;j<3;j++)
{
suma=suma+matriz [j];
}

exit(suma);
}
wait(&edo);/*La función wait suspende la ejecución del proceso actual haste que un proceso hijo ha terminado*/
edo=edo/256;
printf("Fila ",i+1," ",edo);
var=var+edo;
}   
printf("La suma final de todas las filas son: %d \n",var);
//printf("%d", var);
}

Aberroncho

#1
El primer fallo que veo es en la asignación de valores a la matriz:


...
for (i=0;i<MAX;i++)
{
for (j=0;j<MAX;j++)
{
printf("Introduce el valor para la fila %d columna %d: ",i+1,j+1);
scanf("%d", &valor);
matriz[j]=valor;
}
}
...


La asignación que estás haciendo es


matriz[j]=valor;


cuando debiera ser


matriz[i][j]=valor;


El mismo error lo tienes al imprimir la matriz:


printf(" %d", matriz[j]);


en vez de


printf(" %d", matriz[i][j]);


Y lo vuelves a repetir en la suma:


suma=suma+matriz[j];


en vez de


suma=suma+matriz[i][j];




Estas preguntas obtienen respuesta antes si las colocas en el foro correcto: Programación C/C++ (http://foro.elhacker.net/programacion_cc-b49.0/)

"La ignorancia es la noche de la mente, pero una noche sin Luna ni estrellas."
(Confucio)

sTaborracho

#2
Muchas Gracias por la ayuda si disculpa que no supiera donde publicar mi duda... soy nuevo en el foro.. Gracias!!

Y si tengo el codigo asi como me lo indicaste pero por alguna razon la pagina no muestra la i entre [] (al editar el tema aparece).

Y al ejecutarlo me muestra 4errores:
1°.- sys/wait.h: No such file or directory (No existe el fichero o directorio)
2°.- In function 'int main()'
3°.- 'fork' was not declarated in this scope (no fue declarada en este ámbito)
4°.- 'wait' was not declarated in this scope (no fue declarada en este ámbito)

Alguien sabe que sucede??

Aberroncho

que no te salgan los "[ i ]" es porque pones el código entre las etiquetas quote y \quote. Mejor ponlo entre etiquetas code y \code.

En cuanto al error es porque no te encuentra el fichero de cabecera "sys/wait.h". Cambia el "#include <sys/wait.h>" por "#include <unistd.h>" que creo recordar que el prototipo de wait y fork está ahí y con eso deberías solucionar los cuatro errores de compilación.
"La ignorancia es la noche de la mente, pero una noche sin Luna ni estrellas."
(Confucio)

sTaborracho

#4
Muchas Gracias por tomarte la molestia de leer, analizar y comentar, por compartir tu conocimiento.

Ya pude resolver mi problema y de hecho era algo sencillo.

**Nota: El problema es que windows no reconoce el fork... la duda fue debido a que nos pusieron a programar en windows y no teniamos la menor idea de que era programacion para linux

sTaborracho

Buenas. Me dejaron de trabajo el tema de recursividad especificamente el tratamiento de expresiones aritmeticas. (estaria muy agredecido si me pudieras explicar)

Tengo que realizar algoritmos y programas de expresiones prefijas, infijas y postfijas.

Lo que necesito saber es que tengo que programar (que tiene que hacer el programa) que sea prefija, infija y postfija (como diferenciar uno de otro).

He leido que puede ser el de factorial, palindromo, fibonachi ejemplos de expresiones recursivas.... pero como se cual es infija, prefija y postfija (que debe hacer cada una).

Agradezco el tiempo que se tomen en leer y comentar.... Muchas gracias por compartir su conocimiento.