ayuda programa en c++

Iniciado por w3ro, 3 Abril 2013, 19:36 PM

0 Miembros y 1 Visitante están viendo este tema.

w3ro

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

Puntoinfinito

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
AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.

durasno

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
Ahorrate una pregunta, lee el man

Puntoinfinito

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  :¬¬
AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.

durasno

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
Ahorrate una pregunta, lee el man

Puntoinfinito

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
AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.

leosansan

#6
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!. ....