Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: wapch80 en 29 Julio 2011, 23:52 pm



Título: Amigos ayuda urgente
Publicado por: wapch80 en 29 Julio 2011, 23:52 pm
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..


Título: Re: Amigos ayuda urgente
Publicado por: Flakito81 en 30 Julio 2011, 00:15 am
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!!


Título: Re: Amigos ayuda urgente
Publicado por: wapch80 en 30 Julio 2011, 01:52 am
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


Título: Re: Amigos ayuda urgente
Publicado por: leogtz en 30 Julio 2011, 04:42 am
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.


Título: Re: Amigos ayuda urgente
Publicado por: wapch80 en 30 Julio 2011, 05:00 am
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????


Título: Re: Amigos ayuda urgente
Publicado por: leogtz en 30 Julio 2011, 05:03 am
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:

Código:
matriz[i][j] = XXXXX;


Título: Re: Amigos ayuda urgente
Publicado por: wapch80 en 30 Julio 2011, 05:04 am
ok Gracias por responder amigo... algún dia aprendo caray... por lo menos para mi que soy nuevo en esto del C++  :)


Título: Re: Amigos ayuda urgente
Publicado por: Karman en 30 Julio 2011, 05:28 am
habría que ver si el "profesor" le dio las cosas como las posteó antes de echarle la culpa...

S2


Título: Re: Amigos ayuda urgente
Publicado por: Triper0 en 1 Agosto 2011, 18:30 pm
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...