Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: phooeenix en 23 Abril 2016, 07:27 AM

Título: Programando Arreglos
Publicado por: phooeenix en 23 Abril 2016, 07:27 AM
Hola Buenas a todos, estoy intentando realizar un programa en c++ que me diga la cantidad de ceros que hay en un arreglo bidimensional, las dimensiones del arreglo son dadas por el usuairo las cuales no pueden exeder de 15, y al final debe mostrar

la cantidad de ceros que tiene el arreglo.
la cantidad de ceros que tiene cada renglón del arreglo.
la cantidad de ceros que tenga cada una de las columnas del arreglo.

Este es el avance que llevo hasta ahorita
Código (cpp) [Seleccionar]

#include <cstdlib>
#include <iostream>
#include <ctime>

using namespace std;

/* El progrma debera contar la cantidad de 0's en un arreglo bidimensional
* cuyas dimensiones son dadas por el usuario */

int main(int argc, char *argv[]) {

int y;
int x;
cout<<"Numero de filas: ";
cin>>x;
cout<<"Numero de columnas: ";
cin>>y;
srand(time(0));
int dimension [15][15];

cout<<"\nEl arreglo es: \n\n";

for(int i=0; i<x; i++){

for (int a=0; a<y; a++){

dimension[i][a]= rand() % 9;
cout<<dimension[i][a]<<" ";
}
cout<<endl;
}
cout<<"\n";

cout<<"\n";

system ("PAUSE");
return EXIT_SUCCESS;
}
Título: Re: Programando Arreglos
Publicado por: MAFUS en 23 Abril 2016, 10:16 AM
Oh, que bueno!
El primero que veo que incuye todas las cabeceras correctas de C++.  ;-) ;-)

Pero fallas en la definicion de la tabla. No debería ser
int dimension[15][15] porque así el tamaño lo decides tu, no el usuario: si este usa números más grandes te buscará para que le devuelvas el dinero.
Título: Re: Programando Arreglos
Publicado por: phooeenix en 23 Abril 2016, 10:30 AM
Creo que olvide poner en el post que las dimensiones no pueden exceder a 15  :xD  :silbar:
Título: Re: Programando Arreglos
Publicado por: MAFUS en 23 Abril 2016, 17:13 PM
Ah, pues lo primero que debes hacer es avisar al usuario si se excede en las dimensiones, o son muy pequeñas (imagínate que pone 0 o menor a 0).

Después con bucles anidados haces (te lo voy a dejar en seudocódigo porqué es muy fácil.

por i = 1 hasta num_filas
    cuenta = 0
    por j = 1 hasta num_columnas
        si elemento(i,j) es 0
            cuenta = cuenta + 1
    imprimir "El número de 0s en fila " i " es " cuenta

Similar para conseguir el número de 0s para las columnas.
Para toda la tabla es

cuenta = 0
por i = 1 hasta num_filas
    por j = 1 hasta num_columnas
        si elemento(i,j) es 0
            cuenta = cuenta + 1
imprimir "El número de 0s en la tabla es " cuenta
Título: Re: Programando Arreglos
Publicado por: phooeenix en 25 Abril 2016, 09:02 AM
Muchas Gracias hermano MAFUS, al final el programa me quedo asi:
Código (cpp) [Seleccionar]

#include <cstdlib>
#include <iostream>
#include <ctime>

using namespace std;

/* El progrma debera contar la cantidad de 0's en un arreglo bidimensional
* cuyas dimensiones son dadas por el usuario */

int main(int argc, char *argv[]) {

int ceros=0;
int sum;
int y;
int x;
cout<<"Numero de filas: ";
cin>>x;
cout<<"Numero de columnas: ";
cin>>y;
srand(time(0));
int dimension [x][y];

cout<<"\nEl arreglo es: \n\n";

for(int i=0; i<x; i++){

for (int a=0; a<y; a++){
dimension[i][a]= rand() % 10;
cout<<dimension[i][a]<<" ";


}
cout<<endl;

}
cout<<"\n";
ceros=0;
sum=0;
for(int i=0; i<x;i++){

for(int a=0; a<y;a++){

if(dimension[i][a]==ceros){
sum= sum+1;
}

}

}

cout<<"La cantidad de 0's en el arreglo es de: "<<sum<<endl;

cout<<"\nCeros por fila: "<<endl;
for(int i=0; i<x;i++){
ceros=0;
sum=0;
for(int a=0; a<y;a++){
if (dimension[i][a]==ceros){
sum= sum+1;
}
}
cout<<"Cantidad de 0's en la fila "<<i+1<<" es: "<<sum<<endl;
sum=0;
}
cout<<"\nCeros por Columna: "<<endl;
for(int a=0; a<y;a++){
ceros=0;
sum=0;
for(int i=0; i<x;i++){

if (dimension[i][a]==ceros){
sum= sum+1;
}
}
cout<<"Cantidad de 0's en la columna "<<a+1<<" es: "<<sum<<endl;
sum=0;
}

cout<<"\n";

system ("PAUSE"); 
return EXIT_SUCCESS;
}
Título: Re: Programando Arreglos
Publicado por: LordOfD96 en 25 Abril 2016, 17:07 PM
me gusta tu código ;D
solo que al crear un arreglo bi-dimensional no puedes darle los atributos de X y Y dentro del código, debe primero reservar memoria.

por que no intentas con un arreglo dinámico.
ahorita no recuerdo como se hace pero llegando a mi casa reviso mis apuntes de arreglos dinámicos. :P
Título: Re: Programando Arreglos
Publicado por: MAFUS en 25 Abril 2016, 18:24 PM
C++ y C a partir del estándar del 99 sí se puede declarar el array con variables.
Título: Re: Programando Arreglos
Publicado por: class_OpenGL en 25 Abril 2016, 19:47 PM
Si, bueno, pero como introduzcas valores muy grandes la pila se te va al traste xD
Título: Re: Programando Arreglos
Publicado por: + 1 Oculto(s) en 26 Abril 2016, 05:25 AM
hola amigo class_OpenGl tenes algun proyecto en mente para realizar ? algun video juego? 

te cuento que hice algunos proyectos desde cero sin utilizar librerias, pero se demora demasiado y estaria encantado en poder utilizar opengl para librarme del peso de algunas cosas

saludos...
Título: Re: Programando Arreglos
Publicado por: class_OpenGL en 26 Abril 2016, 15:04 PM
Tanto como proyectos no he hecho, simplemente he hecho "demos gráficas" sobre diversos aspectos de OpenGL, tales como reflexión y refracción dinámicos, iluminación... Es cierto que trabajar puramente con OpenGL puede llegar a ser pesado, porque tienes que definir todos los aspectos (cargar texturas, shaders, framebuffers...), pero te digo que si te lo propones, es satisfactorio :D