Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: w3ro en 3 Abril 2013, 19:36 pm



Título: ayuda programa en c++
Publicado por: w3ro en 3 Abril 2013, 19:36 pm
hola tengo duda en como puedo meter en l siguiente codigo que mostrare las siguientes condiciones
no se deben repetir numerors y en las esquinas debe de guardarse el numero 6
#include <stdio.h>
#include <conio.h>
#define tam 10
void capturar (int M[tam][tam], int f, int c);
void mostrar (int M[tam][tam], int f, int c);

int main ()
{
 int M [tam] [tam];
int f, c, numero;
printf ("¿qué numero de filas desea  para la matriz?: \n");
scanf("%d",&f);
printf ("¿que numero de columnas de la matriz: \n");
scanf("%d",&c);

printf ("\nllenado de matriz: \n");
capturar(M, f, c);
printf ("\nla matriz: ");
mostrar(M, f, c);
getch();
return(0);
}
void capturar (int M[tam][tam], int f, int c)
{
 for (int i = 1 ; i <= f ; i++)
 {
  for (int j = 1 ; j <= c ; j++)
  {
   printf ("Inserte num[%d][%d]: ",i,j);
   scanf("%d",&M [j]);
  }
 }
}

void mostrar (int M[tam][tam], int f, int c)
{
 for (int i = 1 ; i <= f ; i++)
 {
  printf ("\n");
  for (int j = 1 ; j <= c ; j++)
  {
   printf ("[%d]",M [j] );
  }
 }
}


Título: Re: ayuda programa en c++
Publicado por: Puntoinfinito en 3 Abril 2013, 22:18 pm
Me da que la carrera no te va muy bien eh XDD es coña, pero tio intenta algo, pon tu código y por lo menos resume un poco para que parezca una duda convencional ~~

Saludos


Título: Re: ayuda programa en c++
Publicado por: durasno en 4 Abril 2013, 00:54 am
Hola! las matrices comienzan en la posicion 0, por lo que inicializar las variables "i" y "j" en 1 estas desperdiciando una fila y una columna( igual en este caso no tiene mucho sentido ya que no estas trabajando con memoria dinamica)

Para que los numeros no se repitan tnes que hacer una busqueda en la matriz, osea q el numero ingresado no exista. Esto seria lo mas dificil pero intentalo hacer

Y para que se guarde el numero 6 en las esquinas tenes que verificar, a travez de condiciones,  que "i" y "j" sean los bordes:
1 - i y j sean igual a 0(en tu caso igual a 1)
2 -  i igual a 1 y j sea igual a c
3 - i sea igual a f y j igual a 0
4 - i y j sean igual a f y c


Saludos

PD: para postiar el codigo usa la GeSHi


Título: Re: ayuda programa en c++
Publicado por: Puntoinfinito en 4 Abril 2013, 14:54 pm
PD: para postiar el codigo usa la GeSHi

Por favor... Es horroroso leer código de esa manera  :¬¬


Título: Re: ayuda programa en c++
Publicado por: durasno en 6 Abril 2013, 01:47 am
Citar
Por favor... Es horroroso leer código de esa manera  :¬¬
d q hablas??? te gusta leer el codigo asi como lo puso w3ro??? Nose cual es el problema de usar la GeSHi, si asi se visualiza mejor


Título: Re: ayuda programa en c++
Publicado por: Puntoinfinito en 6 Abril 2013, 11:32 am
d q hablas??? te gusta leer el codigo asi como lo puso w3ro??? Nose cual es el problema de usar la GeSHi, si asi se visualiza mejor

Nono!! Puse tu cita para reafirmar tu frase. Me refiero que es horroroso leerlo como lo puso w3ro. Lo no dije bien :P


Título: Re: ayuda programa en c++
Publicado por: leosansan en 6 Abril 2013, 19:25 pm
Antes que nada, para "colgar" un código primero elige donde pone "GeSHi" las etiquetas de C++, aunque el código sea en C,  y en medio de las etiquetas que aparecen "pegas" tu código, así sale bien  y  coloreado y es más fácil de seguir.

Como efecto no deseado, al no poner las etiquetas la matriz M, aparece como M[j], cuando en realidad las tienes bien puestas como
Código:
M[i][j]
Cosas de no usar las susodichas etiquetas.

Por lo demás el código que posteas está muy verde todavía. Pero para  que no se diga que no ayudamos y siendo lo siguiente lo que quieres, si no he entendido mal:


Código
  1. que numero de filas desea  para la matriz?:
  2. 2
  3. que numero de columnas de la matriz:
  4. 4
  5.  
  6. llenado de matriz:
  7. Inserte num[0][0]: 1
  8. Inserte num[0][1]: 2
  9. Inserte num[0][2]: 3
  10. Inserte num[0][3]: 3
  11. El numero esta repetido, ingrese otro
  12. Inserte num[0][3]: 4
  13. Inserte num[1][0]: 5
  14. Inserte num[1][1]: 6
  15. Inserte num[1][2]: 7
  16. Inserte num[1][3]: 7
  17. El numero esta repetido, ingrese otro
  18. Inserte num[1][3]: 8
  19.  
  20. la matriz:
  21. [6][2][3][6]
  22. [6][6][7][6]
  23.  

Te paso el código con "una pequeña maldad", hago uso de un array innecesario. Es para no dártelo todo hecho y que al menos veas como puedes hacerlo directamente al introducir los elementos de la matriz   ;)

Código
  1. #include <stdio.h>
  2.  
  3. #define tam 10
  4. void capturar (int M[tam][tam], int f, int c);
  5. void mostrar (int M[tam][tam], int f, int c);
  6.  
  7. int main ()
  8. {
  9. int M [tam] [tam];
  10. int f, c, numero;
  11. printf ("que numero de filas desea  para la matriz?: \n");
  12. scanf("%d",&f);
  13. printf ("que numero de columnas de la matriz: \n");
  14. scanf("%d",&c);
  15.  
  16. printf ("\nllenado de matriz: \n");
  17. capturar(M, f, c);
  18. printf ("\nla matriz: ");
  19. mostrar(M, f, c);
  20. return(0);
  21. }
  22. void capturar (int M[tam][tam], int f, int c)
  23. {
  24.     int i,j=0,k=0,l=0;
  25.     int numeros[f*c];
  26.     for( i = 0; i < f*c  ; i++){
  27.            if (l==c ){
  28.                k++;
  29.                l=0;
  30.            }
  31.            printf ("Inserte num[%d][%d]: ",k,l);
  32.            l++;
  33.            scanf ("%d",&numeros[i]);
  34.  
  35.            for( j = i-1; j >=0 ; j--){
  36.                if(numeros[i] == numeros[j]){
  37.                    printf("El numero esta repetido, ingrese otro\n");
  38.                    i--;l--;
  39.                    break;
  40.                }
  41.        }
  42.    }
  43.    i=0;
  44.    for (j=0;j<f;j++){
  45.        for (k=0;k<c;k++){
  46.            if ( j==0 && (k==0 ||  k==c-1 )|| j==f-1 && (k==0 ||  k==c-1))
  47.                M[j][k]=6;
  48.            else
  49.                M[j][k]=numeros[i];
  50.            i++;
  51.        }
  52.    }
  53. }
  54.  
  55. void mostrar (int M[tam][tam], int f, int c)
  56. {
  57. int i,j;
  58. for ( i = 0 ; i < f ; i++)
  59. {
  60.  printf ("\n");
  61.  for ( j =0 ; j < c ; j++)
  62.  {
  63.   printf ("[%d]",M[i][j] );
  64.  }
  65. }
  66. }

Tampoco he modificado "casi" el código que posteas, aunque esa forma de declarar la matriz a mí no me gusta. Pero bueno, para que vayas adelantando la tarea creo que tienes material ya.

Saluditos!. ....
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)