• Viernes 26 de Abril de 2024, 20:36

Autor Tema:  quien puede corregirme este programa en c++  (Leído 2271 veces)

miguelb18

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
quien puede corregirme este programa en c++
« en: Miércoles 20 de Octubre de 2010, 21:54 »
0
Buenas a todos soy nuevo en el foro... Este programa debe ser un menu que al ejecutar la primera opcion me carge 10 numeros en un arreglo, la 2da opcion me carge otros 10 numeros en otro arreglo y la 3ra opcion debe cargarme en otro arreglo los numeros repetidos entre el primer y el segundo arreglo todo eso mediante funciones... pero la tercera funcion esta mal formulada pudieran ayudarme a corregirla?

#include <cstdlib>
#include <iostream>
#define MAX  10
using namespace std;
int cargar1 (float a[]);
int cargar3 (float b[]);
int buscar (float a[], float b[],float c[]);
int main()
{
      float c[MAX];
      float b[MAX];
      float a[MAX];

   int opcion;
   
     do {
      cout<<"Proyecto De Programacion In";
      cout<<"n1) LLenar array A";
      cout<<"n2) Llenar array B";
      cout<<"n3) Detectar duplicados";
      cout<<"n4) Salirn";
   
      cout<<"nIndica la opcion:n";
      cin>>opcion;
   
      switch (opcion){
       case 1:{
        cargar1 (a);
         break;}

       case 2:{
        cargar3 (b);
         break;}

       case 3:{
        buscar (a,b,c);
        break;
       }
       default:{
         if (opcion != 4){
            cout<<"Su opcion no esta disponiblen";
            cout<<"Intentelo con otra 1, 2 , 3 o 4 n";
         }
      }
      }
   }while (opcion != 4);

return 0;
}


int cargar1 (float a[])
{int i;
     for (i=0; i<10; i++)
        {cout<<"nIndique un numero de un digito:nn";
         cin>>a;
         }
    return 0;
          }

int cargar3 (float b[])
{int i;
     for (i=0; i<10; i++)
        {cout<<"nIndique un numero de un digito:nn";
         cin>>b;
         }
    return 0;
         }

int buscar (float a[], float b[], float c[])
{int i;
    for (i=0;i<10;i++){
  if (a == b)
         {a = c;}
        }
     return 0;
   }

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: quien puede corregirme este programa en c++
« Respuesta #1 en: Miércoles 20 de Octubre de 2010, 22:18 »
0
La verdad es que esa función de buscar() está difícil de corregir pues básicamente no tiene mucho que ver con lo que quieres hacer. Veamos cómo lo estás intentando hacer:

Código: C
  1. for (i=0;i<10;i++)
  2. {
  3.    if (a[i] == b[i])
  4.    {
  5.       a[i] = c[i];
  6.    }
  7. }
  8.  
Así vas sólo comprobando los elementos coincidentes. Por ejemplo, supongamos que a = {0,1,2,3,4} y b = {1,2,3,4}. Tu código hace:

Código: Text
  1. i = 0
  2. a[0] == b[0] -> 0 == 1 -> Falso
  3. i = 1
  4. a[1] == b[1] -> 1 == 2 -> Falso
  5. etc...
  6.  
Así es obvio que no detecta lo que quieres que detecte.

Éste es el fallo más básico en tu algoritmo. Intenta pensarlo con tranquilidad a ver qué se te ocurre para buscar los números repetidos en dos vectores. Tampoco olvides que necesitas cargarlos en c, y que al insertar elementos en c necesitas usar un índice aparte.

Aparte, si tu función no necesita devolver ningún valor, no hace falta que la declares como int. Ponle void.

Saludos

PD: intenta escribir código más legible usando tabulaciones y dejando las llaves solas en una línea (como el ejemplo que te he puesto).

miguelb18

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: quien puede corregirme este programa en c++
« Respuesta #2 en: Miércoles 20 de Octubre de 2010, 22:27 »
0
bueno amigo y tu me darias aunke sea una idea de que forma podria hacerlo es que de verdad no se mucho programar estoy empezando y como entenderas tengo mis limitaciones...

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: quien puede corregirme este programa en c++
« Respuesta #3 en: Miércoles 20 de Octubre de 2010, 22:30 »
0
Es que la programación trata precisamente de eso, de pensar. Intenta pensarlo un poco, si no das con nada, te voy (vamos) dando pistas. No es muy complicado si imaginas los vectores como objetos físicos (por ejemplo un armario con cajones) y el ordenador como un robot que debe ordenar varios armarios.

miguelb18

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: quien puede corregirme este programa en c++
« Respuesta #4 en: Miércoles 20 de Octubre de 2010, 22:35 »
0
bueno voy a hacer lo que me dices... podrias darme tu correo para cualquier cosa preguntarte?

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: quien puede corregirme este programa en c++
« Respuesta #5 en: Miércoles 20 de Octubre de 2010, 22:59 »
0
No te preocupes que miraré el foro para responderte. Esto es una comunidad, no una web de citas  :lol:  ^_^

miguelb18

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: quien puede corregirme este programa en c++
« Respuesta #6 en: Miércoles 20 de Octubre de 2010, 23:05 »
0
y ejecutando una funcion asi lo estoy haciendo mejor? aun no me da pero me parece que es un poco mejor que la otra...

#include <cstdlib>
#include <iostream>
#define MAX  10
using namespace std;
int cargar1 (float a[]);
int cargar3 (float b[]);
int buscar (float a[], float b[],float c[]);
int main()
{
      float c[MAX];
      float b[MAX];
      float a[MAX];

   int opcion;
   
     do {
      cout<<"Proyecto De Programacion In";
      cout<<"n1) LLenar array A";
      cout<<"n2) Llenar array B";
      cout<<"n3) Detectar duplicados";
      cout<<"n4) Salirn";
   
      cout<<"nIndica la opcion:n";
      cin>>opcion;
   
      switch (opcion){
       case 1:{
        cargar1 (a);
         break;}

       case 2:{
        cargar3 (b);
         break;}

       case 3:{
        buscar (a,b,c);
        break;
       }
       default:{
         if (opcion != 4){
            cout<<"Su opcion no esta disponiblen";
            cout<<"Intentelo con otra 1, 2 , 3 o 4 n";
         }
      }
      }
   }while (opcion != 4);

return 0;
}


int cargar1 (float a[])
{int i;
     for (i=0; i<10; i++)
        {cout<<"nIndique un numero de un digito:nn";
         cin>>a;
         }
    return 0;
          }

int cargar3 (float b[])
{int i;
     for (i=0; i<10; i++)
        {cout<<"nIndique un numero de un digito:nn";
         cin>>b;
         }
    return 0;
         }

int buscar (float a[], float b[], float c[])
{int i,j;
    for (i=0;i<10;i++){
        for (j=0; j<10;j++){
  if (a == b[j])
         {a = c;
         cin>>c;}
         }
        }
     return 0;
   }

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: quien puede corregirme este programa en c++
« Respuesta #7 en: Jueves 21 de Octubre de 2010, 08:38 »
0
Hombre, ahora ya vas por el bien camino  ^_^

Formatea tu código en condiciones y utiliza las etiquetas de código, tal que así:

Código: C
  1. int buscar (float a[], float b[], float c[]){
  2.     int i,j;
  3.     for (i=0;i<10;i++){
  4.         for (j=0; j<10;j++){
  5.             if (a[i] == b[j]){
  6.                 a[i] = c[i];
  7.                 cin>>c[i];
  8.             }
  9.         }
  10.     }
  11.     return 0;
  12. }
  13.  
si no, no hay quien lea eso. Por favor, intenta ponerlo así de ahora en adelante.

Bueno, veo que has puesto bucles anidados, que sin duda es la solución más sencilla. Lo que no entiendo es por qué guardas el valor de c en a (a = c;) cuando lo que debes hacer es guardar el valor de a en c (al revés).

cin>>c; no viene mucho a cuento, no sé qué intentas hacer con ello.

Y finalmente, como ya te comenté anteriormente, necesitas otro índice más (aparte de i y j) para recorrer c, ya que no tiene porqué ir a la par de a (aunque puede ocurrir en algún caso aislado).

Saludos, que ya estás a las puertas del éxito.