Test Foro de elhacker.net SMF 2.1

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
Cita de: durasno en  4 Abril 2013, 00:54 AM
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
CitarPor 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
Cita de: durasno en  6 Abril 2013, 01:47 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
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 (cpp) [Seleccionar]
que numero de filas desea  para la matriz?:
2
que numero de columnas de la matriz:
4

llenado de matriz:
Inserte num[0][0]: 1
Inserte num[0][1]: 2
Inserte num[0][2]: 3
Inserte num[0][3]: 3
El numero esta repetido, ingrese otro
Inserte num[0][3]: 4
Inserte num[1][0]: 5
Inserte num[1][1]: 6
Inserte num[1][2]: 7
Inserte num[1][3]: 7
El numero esta repetido, ingrese otro
Inserte num[1][3]: 8

la matriz:
[6][2][3][6]
[6][6][7][6]


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 (cpp) [Seleccionar]
#include <stdio.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 ("que 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);
return(0);
}
void capturar (int M[tam][tam], int f, int c)
{
    int i,j=0,k=0,l=0;
    int numeros[f*c];
    for( i = 0; i < f*c  ; i++){
           if (l==c ){
               k++;
               l=0;
           }
           printf ("Inserte num[%d][%d]: ",k,l);
           l++;
           scanf ("%d",&numeros[i]);

           for( j = i-1; j >=0 ; j--){
               if(numeros[i] == numeros[j]){
                   printf("El numero esta repetido, ingrese otro\n");
                   i--;l--;
                   break;
               }
       }
   }
   i=0;
   for (j=0;j<f;j++){
       for (k=0;k<c;k++){
           if ( j==0 && (k==0 ||  k==c-1 )|| j==f-1 && (k==0 ||  k==c-1))
               M[j][k]=6;
           else
               M[j][k]=numeros[i];
           i++;
       }
   }
}

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


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)