Foros del Web » Programación para mayores de 30 ;) » C/C++ »

arreglos bidimencionales (matrices)

Estas en el tema de arreglos bidimencionales (matrices) en el foro de C/C++ en Foros del Web. hola buenas noches esperando me puedan auxiliar con una tarea que me dejaron y la verdad no comprendo del todo dice asi: haga una matriz ...
  #1 (permalink)  
Antiguo 03/05/2014, 21:54
 
Fecha de Ingreso: mayo-2014
Ubicación: tlajomulco de zuñiga
Mensajes: 4
Antigüedad: 10 años
Puntos: 0
arreglos bidimencionales (matrices)


hola buenas noches
esperando me puedan auxiliar con una tarea que me dejaron y la verdad no comprendo del todo dice asi:

haga una matriz que solicite los valores reales de las celdas de una matriz de 4x4 y muestre lo siguiente:
a)el contenido de la matriz (esto si lo se aplicar)
b)la suma de los elementos de la matriz
c)el promedio de la matriz
d)la posición del elemento mayor y el valor de dicho elemento
e)la posición del elemento menor y el valor de dicho elemento
f)la cantidad de elementos que son iguales al elemento menor
g)la cantidad de elementos que son iguales al elemento mayor
g)la cantidad de elementos que son mayor al elemento menor
i)la cantidad de elementos que son mayor al elemento mayor

espero me puedan orientar un poco ya estoy abrumada ya que solo es uno de los 10 que nos dejo perdonen las molestias

gracias por su ayuda
  #2 (permalink)  
Antiguo 04/05/2014, 00:54
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: arreglos bidimencionales (matrices)

hola amigo.
bueno si ya sabes como mostrar los elementos de una matriz es casi lo mismo solo que en vez de mostrar el resultado d cada celda solo suma cada celda despues ya teniendo la suma somo divides en el numero total de celdas.
bueno si lo haces usando for el de mostrar celdas igual solo has una comprobacion de cada celda y despues si cierta celda es mayo como estas en el for solo hagarra la variable del for e imprimes el lugar de valor mayo.
despues si haces lo mismo una comprobacion celda por celda para encontrar al numero menor y despues imrpimes todas las celda ecepto el menor.
y asi con todas las demas opciones lo puedes hacer con for o sentencias if para la coprobacion.
bueo escon loq ue te puedo ayudar y si quieres que aqui te ayuden tienes que intentarlo hace y publicar donde ya no puedas seguir o algun error y si alguien esta en linea te podra ayudar.
saludos drewemerc.
  #3 (permalink)  
Antiguo 04/05/2014, 01:52
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: arreglos bidimencionales (matrices)

b) para sumar es solo recorrer la matriz y en vez de mostrar el valor guardas el resultado en una variable por ejemplo llamada "suma", el bucle haria algo asi

suma = suma + tabla[columna][fila];

claro eso suponiendo que columna y fila son los indices de un bucle for doble por ejemplo.

c) el promedio es dividir el total por un determinado numero.

d) Ese es facil, en la misma que va recorriendo los valores vas guardando el mayor numero.

Por ejemplo creas una variable y vas guardando en ella el mayor numero encontrado.

if ( matriz[columna][fila] > mayor){
mayor = matriz[columna][fila]//guardamos el mayor numero encontrado
columnaDelMayor = columna;//guardamos la columna
filaDelMayor = fila;//gradamos la fila
}
Lo anterior va dentro del bucle for doble por supuesto ;)

e) es lo mismo solo que cambia las variables y estas buscando el menor no el mayor.

f) Para encontrar la cantidad de elementos iguales es facil, es solo hacer un numero que vaya aumentando si encuentra un numero igual al mayor y que cuando encuentre otro mayor pues vuelva a cero y vuelva a contar.

eso todo son comprobaciones que haces con comparando uno con otro.

Te recomiendo que lo pienses sobre un papel luego lo transforme a código.

No te vamos hacer el trabajo ana que sino que estas haciendo en clase XDDD
vaya haciendo eso que te dije, segun vamos viendo tu avance y tengas mas dudas pues te vamos ayudando.
¿Si te hago el trabajo me das la nota a mi?Lo mismo con el sueldo jeje
Te ayudamos en lo que te haga falta pero haz algo de código vas solucionando problemas.
Prueba hacer cada problema por separado, luego los junta o lo que sea, pero si pones aquí lo que tienes que hacer veras que en ningún foro pocos te van ayudar pero si pones algo de código con tus dudas pues hasta que no termines el trabajo tendrás 500 ayudas a diario, haz la prueba ;)
Suerte
  #4 (permalink)  
Antiguo 04/05/2014, 19:10
 
Fecha de Ingreso: mayo-2014
Ubicación: tlajomulco de zuñiga
Mensajes: 4
Antigüedad: 10 años
Puntos: 0
Respuesta: arreglos bidimencionales (matrices)

haciendo caso a sus comentarios les muestro este pero no corre es de suma y su posicion, este lo hice primero en pseudocodigo (la maestra asi no lo pide) y luego lo pase a codigo pero no corrio me pueden decir en que me equivoque

#include<stdlib.h>
#include<stdio.h>
int main ()
{
int m[5][5];
int g,h,x=0,z=0,c=0,d=0,mayor,menor;
for(g=0;g<5;g++)
{
for(h=0;h<5;h++)
{
printf("Dame los valores por columnas \n");
scanf("%",&m[g][h]);
}
}
mayor=m[0][0];
menor=m[0][0];
for(g=1;g<5;g++)
{
for(h=1;h<5;h++)
{
mayor=m[g][h];
c=g;
d=h;
}
if(menor>m[g][h])
menor=m[g][h];
x=g;
z=h;
}
}
}
printf("El mayor es %d \n",mayor);
printf("Su posicion es %d %d \n",c,d);
printf("El menor es %d \n",menor);
printf("Su posicion es %d %d \n",x,z);
getch ();
}

gracias
  #5 (permalink)  
Antiguo 04/05/2014, 23:57
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: arreglos bidimencionales (matrices)

hola amigo.
bueno mira el problema en tu codigo es que te pasaste en el numero de llavez, pusiste de mas por eso no compilaba.
bueno esta es la forma que se me ocurrio para hacerlo rapido.
y buen pues solo tienes que cambiar los valores por los verdaderos que quieres en la matriz ya que yo los cambie por que es un poco tedioso andar intruduciendo todos los datos.
y bueno ya tu lo puedes modificar para que sea en funciones que el ususario uintruduzca el tamaño de la matriz y en vez de los valores enteros poner las variables etc.
bueno espero que te sirva y un consejo trata de aprender a tabulear tu codigo asi te facilitar el detectar este tipo de errores y pon el codigo etiquetado .
si no sabes aqui te digo como, en la parte superior derecha donde dice Highlight despliegas y escojes el lenguaje en este caso c y en medio de los dos corchetes que te aparecen introduces el codigo y ya.
bueno espero que te sirva el codigo.

Código C:
Ver original
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3.  
  4. int main ()
  5. {
  6.     int m[2][3], n[6];
  7.     int i=0, g=0,h=0,x=0,z=0,c=0,d=0,mayor=0,menor=0, suma =0;
  8.     /*llenamos la matriz*/
  9.     for(g=0; g < 2; g++)
  10.     {
  11.         for(h=0; h < 3; h++)
  12.         {
  13.             printf("Dame los valores por columnas \n");
  14.             scanf("%d",&m[g][h]);
  15.         }
  16.     }
  17.     /*pasamos los valores de la matriz a un array unidimencional*/
  18.     for(g=0; g < 2; g++)
  19.     {
  20.         for(h=0; h < 3; h++)
  21.         {
  22.            
  23.             n[i] = m[g][h];
  24.             i++;
  25.         }
  26.     }
  27.     /*ordenamos el array unidimencional*/
  28.     for(g=1; g < 6; g++)
  29.     {
  30.         for(h=0; h < 6-1; h++)
  31.         {
  32.            
  33.             if (n[h] > n[h+1])
  34.             {
  35.                 mayor = n[h+1];
  36.                 n[h+1] = n[h];
  37.                 n[h] = mayor;
  38.                
  39.             }
  40.         }
  41.     }
  42.     /*obtenemos el numero mayor y menor*/
  43.     for(g=0; g < 2; g++)
  44.     {
  45.         for(h=0; h < 3; h++)
  46.         {
  47.             if ((m[g][h] == n[0]) && (menor != n[0]) )
  48.             {  
  49.                 menor = n[0];
  50.                 printf("El menor es %d \n",n[0]);
  51.                 printf("Su posicion es %d %d \n",g,h);
  52.             }
  53.              if((m[g][h] == n[5]) && (mayor != n[5]))
  54.             {
  55.                 mayor = n[5];
  56.                 printf("El mayor es %d \n",n[5]);
  57.                 printf("Su posicion es %d %d \n",g,h);
  58.             }  
  59.         }
  60.     }
  61.  
  62.     /*hacemos la suma linealmente osea si tenemos:
  63.     1   2
  64.     2   3
  65.     mostramos la suma 1+2+2+3 = 8*/
  66.     for (i = 0; i < 6; i++)
  67.         suma += n[i];
  68.    
  69.     printf("la suma de la matriz es: %d\n", suma);     
  70.     /*obtenemos la suma verticalmente:
  71.     1   2
  72.     2   3
  73.     mostramos 1+2=3 2+3=5;*/
  74.     for (g = 0; g < 5; g++)
  75.     {
  76.         for (h = 0; h < 1; h++)
  77.         {
  78.             /*agregar m[0][g] + m[1][g]+m[2][g] + m[3][g]+m[4][g], si la matriz es de 5*/
  79.             suma = m[0][g] + m[1][g];
  80.             printf("suma vertical es %d\n", suma);
  81.            
  82.         }
  83.     }
  84.  
  85. return 0;  
  86. }

saludos
  #6 (permalink)  
Antiguo 05/05/2014, 03:31
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: arreglos bidimencionales (matrices)

Cita:
si no sabes aqui te digo como, en la parte superior derecha donde dice Highlight despliegas y escojes el lenguaje en este caso c y en medio de los dos corchetes que te aparecen introduces el codigo y ya.
Muy bien lo que te dice el compañero, otra forma es seleccionar (pintar) todo el código y luego aplicar el etiquetado.

Un consejo, esto:

int g,h,x=0,z=0,c=0,d=0;

no lo hagás, eso es mala práctica, es muy fundamental especificar el nombre de las variables/arrays/vectores/matrices, porque si no, no vas a saber que variable contiene X valor, siempre es mejor especificar nombres.
Yo he visto en muchos códigos esos nombres de variables y la verdad no los recomiendo.
  #7 (permalink)  
Antiguo 06/05/2014, 18:41
 
Fecha de Ingreso: mayo-2014
Ubicación: tlajomulco de zuñiga
Mensajes: 4
Antigüedad: 10 años
Puntos: 0
Respuesta: arreglos bidimencionales (matrices)

otra vez yo :s

este programa me marca error me podrian decir en que me equivoque por favor
Código C:
Ver original
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. int main ()
  5. {
  6.     int i,j,m[6],num,a;
  7.     printf ("Teclea un numero\n");
  8.     scanf("%d",&num);
  9.     m[0]=num;
  10.     for (i=1;i<5;i++)
  11.     m[i]= pow(num,i);
  12.     getch();
  13. }

el problema dice asi:
usar una matriz para guardar 10 datos numericos del usuario,junto con sus primeras 5 potencias ejemplo si el usuario teclea 2, se debera guardar en la matriz de la siguiente manera: 2 2 4 8 16 32

segun la maestra si corre ya que me lo reviso ella pero no es asi

gracias
  #8 (permalink)  
Antiguo 06/05/2014, 19:19
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: arreglos bidimencionales (matrices)

hola amigo pues nose que error teda pero el unico que puedo ver que te de error es getch ya que es de la libreria conio y no la incluyes pero para no tener esosproblemas solo pon getchar que hace lo mismo tu codigo quedaria asi.

Código C:
Ver original
  1. #include<stdio.h>
  2.     #include<stdlib.h>
  3.     #include<math.h>
  4.     int main ()
  5.     {
  6.         int i=0,j=0,m[6],num=0,a=0;
  7.         printf ("Teclea un numero\n");
  8.         scanf("%d",&num);
  9.         m[0]=num;
  10.         for (i=1;i<6;i++)
  11.         {        
  12.             m[i]= pow(num,i);
  13.             printf("%d\n", m[i]);
  14.         }
  15.         getchar();
  16.         getchar();
  17.     }
saludos.
  #9 (permalink)  
Antiguo 09/05/2014, 16:21
 
Fecha de Ingreso: mayo-2014
Ubicación: tlajomulco de zuñiga
Mensajes: 4
Antigüedad: 10 años
Puntos: 0
Respuesta: arreglos bidimencionales (matrices)

por que no corre???

Código C:
Ver original
  1. //escriba un programa que solicite 30 valores enteros y almacene en un vector los valores pares y
  2. // en otro los impares el programa debe solicitar :
  3. //      1) vector obtenido par e impar
  4. //      2)cantidad de valores leidos pares e impares
  5. //      3)suma de los valores pares e impares
  6. //      4)promedio de los valores pares e impares
  7. //      5)el valor menor de los pares y de los impares
  8. //      6)el valor mayor de los pares y de los impares.
  9. //      7)separando la informacion de los pares y los impares
  10.  
  11.  
  12. #include<stdio.h>
  13. #include<conio.h>
  14.  
  15. int main () {
  16.     int m[30],par[30],imp[30],i,sump=0,sumi=0,pp=0,im=0,mp=0,mi=0,mep=0,mei=0;
  17.     int cant_pares, cant_nones;
  18.    
  19.     cant_pares = 0;
  20.     cant_nones = 0;
  21.     for(i = 0; i < 30; i++) {
  22.         printf ("Teclea el valor m[%d]: ", i);
  23.         scanf ("%d", &m[i]);
  24.         if (m[i] % 2 == 0) {
  25.             par[cant_pares] = m[i];
  26.             cant_pares++;
  27.             sump = sump + m[i];
  28.         } else {
  29.             imp[cant_nones] = m[i];
  30.             cant_nones++;
  31.             sumi = sumi + m[i];
  32.         }
  33.     }
  34.     pp = sump / cant_pares;
  35.     im = sumi / cant_nones;
  36.    
  37.     mp = par[0];
  38.     mep = par[0];
  39.     for (i = 1; i < cant_pares; i++) {
  40.         if (par[i] > mp) {
  41.             mp = par[i];
  42.         }
  43.         if (par[i] < mep) {
  44.             mep = par[i];
  45.         }
  46.     }
  47.    
  48.     mi = imp[0];
  49.     mei = imp[0];
  50.     for (i = 1; i < cant_nones; i++) {
  51.         if (imp[i] > mi) {
  52.             mi = imp[i];
  53.         }
  54.         if (imp[i] < mei) {
  55.             mei = imp[i];
  56.         }
  57.     }
  58.    
  59.     printf(" El vector par es \n");
  60.     for (i = 0; i < cant_pares; i++) {
  61.         printf(" %d  \n",par[i]);
  62.     }
  63.     printf(" La suma de los numeros pares es %d \n",sump);
  64.     printf(" Los numeros pares fueron %d \n", cant_pares);
  65.     printf(" El promedio de los numeros pares es %d \n",pp);
  66.     printf(" El numero mayor de los numeros pares es %d \n",mp);
  67.     printf(" El numero menor de los numeros pares es %d \n",mep);
  68.     printf(" \n \n");
  69.     printf(" El vector impar es \n");
  70.     for (i = 0; i < cant_nones; i++) {
  71.         printf(" %d  \n",imp[i]);
  72.     }
  73.     printf(" La suma de los numeros impares es %d \n",sumi);
  74.     printf(" Los numeros pares fueron %d \n",cant_nones);
  75.     printf(" El promedio de los numeros impares es %d \n",im);
  76.     printf(" El numero mayor de los numeros impares es %d \n",mi);
  77.     printf(" El numero menor de los numeros impares es %d \n",mei);
  78. getchar(); 
  79. }
  #10 (permalink)  
Antiguo 09/05/2014, 18:13
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: arreglos bidimencionales (matrices)

hola pues nose que error tengas ami me funciona bien bueno solo quitando la libreria conio y getch ya que yo no los puedo usar, alomejor ese es tu error no puedo saber que error tienes edberia de publicar tu error asi te podriamos ayudar mas.
saludos
drewermerc.
  #11 (permalink)  
Antiguo 09/05/2014, 20:33
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: arreglos bidimencionales (matrices)

A mi también funciona bien, no se que errores tienes.
Deberías evitar el uso de conio solo para pausar el programa, y usarlo solo si es extremadamente necesario.
¿Por curiosidad que compilador usas?
  #12 (permalink)  
Antiguo 09/05/2014, 21:54
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: arreglos bidimencionales (matrices)

si tienes razon vangod no es bueno usar conio en vez de eso si quiere usar una libreria con funciones parecidas usa ncurses para linux o pdcurses para windows.
y en vez del getch usar solo poniendo doble getchar(); y asunto solucionado si no usas conio.

Etiquetas: arreglos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:22.