Amigos ayuda urgente

Iniciado por wapch80, 29 Julio 2011, 23:52 PM

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

wapch80

resulta que un profesor de mi universidad me pregunto que segun este programa , que era lo que hacia:

#include <stdio.h>
void main()
{
int matriz[5][3], i, j;
for (i = 0; i < 5; i++){
    for (j = 0; j < 3; j++){
        matriz[j] = i + j;
        }
    }
j = 0;
for (i = 0; i < 3; i++){
printf("%i\n, matriz[i + j][2 – i]");
}
return 0;
}

Por mas que intento correrlo en Geany de Ubunto (el programa), lo intento compilar y me dice que ay una serie de errores:

Compu III.cpp:2:11: error: '::main' must return 'int'
Compu III.cpp: In function 'int main()':
Compu III.cpp:12:38: warning: too few arguments for format

Pues debo confesar que no tengo ninguna base en C++, algo muy muy lejano, podrian ayudarme a ver como debo correrlo en el compilador para por lo menos ver que es lo que hace dicho programa y dar mi respuesta?.... les estare muy agradecido por eso..

Flakito81

Hay varios errores:

1- el prototipo de la funcion debe de ser int main(), fácilmente deducible si estas retornando un cero.
2- En el bucle anidado hay un error xq estas usando la variable matriz como si fuera unidimensional, pero lo has declarado bidimensional. No tiene sentido
3- En el último for hay varios errores:
3.1- No tiene sentido hacer i +j si j = 0 y nunca cambia, dicho de otra manera con poner i tienes.
3.2- El printf está mal escrito. lo correcto es printf ("%d\n", matriz[2-i]); [fijate en las comillas]

Lo que hace la ultima parte es recorrer la diagonal principal de la submatriz de 3x3, pero comenzando desde el elemento inferior, es decir:
[0-2]
[1-1]
[2-0]

NOTA: el error 2 lo puedes corregir poniendo: matriz[j]= i+j;

Suerte!!

wapch80

Oye genial, pero creo que hay otros errorcitos... ya que te muestro lo que el profesor me envio:

#include <stdio.h>
void main()
{
int matriz[5][3], i, j;
for (i = 0; i < 5; i++)
for (j = 0; j < 3; j++)
matriz[j] = i + j;
j = 0;
for (i = 0; i < 3; i++)
printf("%i\n", matriz[i + j][2 – i]);
}

eso fue exactamente lo que el me envio. Como puedes observar el return 0 se lo agregue yo por que pense que podria ser asi, pero a su vez cambie el prototipo por Int, ya que no sabia que return agregar si el prototipo era void. Espero que puedas ver el detalle ya que = ando medio perdido, pense que lo que hacia era una suma de matrices pero ya veo que no... muchisimas gracias por tomarte tu tiempo

leogtz

Lo que te mandó tu profesor está mal. Es int main(void), , no void main(), y si agregas el return estando void claro que dará error, estás tratando de devolver algo cuando no puedes.

Dile a tu profesor que agarre un buen libro y se ponga a leer.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

wapch80

Pero como podrías tu darle el sentido a esa cosa llamado programa que me envió el Piraton del profesor... que querría haber querido decir con ese programa... sumaba, restaba matrices, colocaba en 1 la diagonal????

leogtz

#5
Simplemente operaciones con matrices, tampoco se puede hacer:

matriz[j] = XXXXX;

Ya que es un array de arrays, o matriz bidimensional, no tiene sentido hacer eso.

Quizá quiso decir:

matriz[i][j] = XXXXX;
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

wapch80

ok Gracias por responder amigo... algún dia aprendo caray... por lo menos para mi que soy nuevo en esto del C++  :)

Karman

habría que ver si el "profesor" le dio las cosas como las posteó antes de echarle la culpa...

S2

Triper0

Se ve que el profesor no tiene ni idea o es muy despistado o hizo un copy peaste sin mirar, pero es un campo minado de errores, y errores pavos jaja...

Pero bueno, siempre en alguna que otra práctica o teoría se filtran estos tipos de programas que cuando los tratás de compilar no funcionan ni para atrás... Dudo que haya muchos profesores que se tomen la delicadeza de compilar y revisar cada código que ponen en las teorías/prácticas para estar seguros que no están haciendo cualquiera... Y después los alumnos lo padecemos jaja

Saludos...