Programando Arreglos

Iniciado por phooeenix, 23 Abril 2016, 07:27 AM

0 Miembros y 2 Visitantes están viendo este tema.

phooeenix

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;
}

MAFUS

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.

phooeenix

Creo que olvide poner en el post que las dimensiones no pueden exceder a 15  :xD  :silbar:

MAFUS

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

phooeenix

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;
}

LordOfD96

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

MAFUS

C++ y C a partir del estándar del 99 sí se puede declarar el array con variables.

class_OpenGL

Si, bueno, pero como introduzcas valores muy grandes la pila se te va al traste xD

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

+ 1 Oculto(s)

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...

class_OpenGL

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

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL