Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: iAmChapin_ en 7 Septiembre 2015, 08:32 am



Título: Vectores (Array) de N posiciones C++
Publicado por: iAmChapin_ en 7 Septiembre 2015, 08:32 am
Buenas! Creo que algunos ya me conocen, estoy comenzando a estudiar C++ y pues soy un estudiante de universidad, aqui ya me han ayudado muchisimo y pues quiero seguirlos molestando  :xD se que algun dia sere yo el que resuelva dudas pero por el momento sere yo el de las dudas. Pues los problemas van asi:

(http://i60.tinypic.com/o8uw5k.jpg)

En el pensamiento obtuve una manera de como resolverlo... pero ya pasandolo a C++ creo que no di en el clavo. Yo llevo mi codigo del primer ejercicio de esta manera y no sale nada de lo que quiero:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(){
  5. int vector[20];
  6.   int i;
  7.   int resultado;
  8.  
  9.   for (i=0; i<20; i++){
  10.  
  11.   cout << "Ingresa 20 numeros: "; cin >> vector[i]; // HASTA QUE SE INGRESEN 20 NUMEROS SALE DEL CICLO
  12.      }
  13.  
  14. //CUANTAS VECES SE INGRESARON LOS NUMEROS
  15.   for (i=0; i<20; i++){
  16.   if (vector[1]==i){
  17.       resultado++;
  18.      }
  19.      }
  20. //IMPRIMIMOS QUE NUMEROS SE REPITIERON
  21.  
  22.      cout << "El numero " << vector << "esta repetido " << resultado << " veces";
  23.  
  24.   cin.get();
  25.   return 0;
  26. }

Podrian darme una mano con esto? En la impresion de resultados quiero que salgan cuantos numeros se repitieron, si el 2 se repitio 3 veces tengo que indicarlo, y tambien si otro numero se repitio tantas veces, tambien tengo que indicarlo, tengo que identificar cuantos numeros se ingresaron repetidas veces! El segundo problema no se me ocurre como hacerlo  :( espero puedan ayudarme, gracias!


Título: Re: Vectores (Array) de N posiciones C++
Publicado por: ivancea96 en 7 Septiembre 2015, 14:03 pm
En el cout tienes que poner "vector[ i ]". Y en el if, ifual, que pussite "vector[ 1 ]".

Aunque ten en cuenta que tienes los 2 for con la misma variable "i". En uno, pon otra variable diferente para contar.
Replantea el código.


Título: Re: Vectores (Array) de N posiciones C++
Publicado por: Bob1098 en 7 Septiembre 2015, 18:52 pm
Además de lo ya dicho me parece que si la variable resultado no tiene un valor inicial asignado no funcionara como contador. Si te diese problemas dale un valor inicial de 0, si te funciona bien no hay problema.


Un saludo.


Título: Re: Vectores (Array) de N posiciones C++
Publicado por: iAmChapin_ en 10 Septiembre 2015, 00:31 am
Muy bien, tome en cuenta sus comentarios y replantee el codigo entero. Lo tengo que hacer con funciones y pues le agregue la funcion pero funciona igual. El codigo ahora me compila, me ejecuta y me hace el proceso que quiero, pero me imprime un dato extra innecesario al final, podrian decirme en que linea tengo el error para que no imprima ese otro dato? Les presento el codigo.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void procedimiento(int a[]){
  6.  
  7. int contador[20] = {0};
  8. int x;
  9. int i;
  10.  
  11.  
  12. //LLENAMOS LA VARIABLE CONTADOR DE LOS NUMEROS INGRESADOS PARA DESPUES REVISARLOS
  13.       for (i = 0; i <= 20; i++)
  14.       {
  15.        for (x = 0; x <= 20; x++)
  16.          {
  17.             if (a[i] == x)
  18.             {
  19.              contador[x]++;
  20.             }
  21.          }
  22.  
  23.       }
  24.  
  25.       //CON ITERACIONES REVISAMOS LOS NUMEROS PARA VER CUANTAS VECES SE REPITIERON
  26.       for (i = 0; i <= 20; i++)
  27.       {
  28.           if (contador[i] != 0)
  29.           {
  30.              if (contador[i] == 1)
  31.              {
  32.              //NO HAGO NADA PORQUE EL NUMERO SOLO SE REPITE UNA VEZ
  33.              }
  34.              else
  35.              {
  36.              //IMPRIMO CUANTAS VECES SE REPITE UN NUMERO INGRESADO
  37.              cout << i << " se repite " << contador[i] << " veces" << endl;
  38.              }
  39.           }
  40.       }
  41. }
  42.  
  43. int main(){//INICIO DEL PROGRAMA
  44.  
  45.    int vector[20];
  46.    int a;
  47.    int posicion = 1;
  48.  
  49.    //LLENAMOS EL VECTOR CON 20 NUMEROS QUE SE INGRESEN
  50.       for(a=0; a < 20; a++){
  51.  
  52.     cout << "Ingresa el numero de la posicion " << posicion++ << endl;
  53.         cin >> vector[a];
  54.  
  55.     }
  56.  
  57.     //LLAMAMOS A UNA FUNCION
  58.     procedimiento(vector);
  59.  
  60.     //TECLAZO
  61.      cin.get();
  62.  
  63.      return 0;
  64. }//FIN DEL PROGRAMA

El programa imprime al final de los resultados deseados algo innecesario, se los muestro:

(http://i60.tinypic.com/2vcg808.png)

En la parte donde dice 20 se repite tantas veces... Podrian ayudarme? Gracias!!


Título: Re: Vectores (Array) de N posiciones C++
Publicado por: someRandomCode en 10 Septiembre 2015, 01:07 am
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void procedimiento(int a[]){
  6.  
  7. int contador[20] = {0};
  8. int x;
  9. int i;
  10.  
  11.  
  12. //LLENAMOS LA VARIABLE CONTADOR DE LOS NUMEROS INGRESADOS PARA DESPUES REVISARLOS
  13.       for (i = 0; i < 20; i++)
  14.       {
  15.        for (x = 0; x < 20; x++)
  16.          {
  17.             if (a[i] == x)
  18.             {
  19.              contador[x]++;
  20.             }
  21.          }
  22.  
  23.       }
  24.  
  25.       //CON ITERACIONES REVISAMOS LOS NUMEROS PARA VER CUANTAS VECES SE REPITIERON
  26.       for (i = 0; i < 20; i++)
  27.       {
  28.           if (contador[i]>1)
  29. {  
  30. cout << i << " se repite " << contador[i] << " veces" << endl;
  31.                }
  32.       }
  33. }
  34.  
  35. int main(){//INICIO DEL PROGRAMA
  36.  
  37.    int vector[20];
  38.    int a;
  39.    int posicion = 1;
  40.  
  41.    //LLENAMOS EL VECTOR CON 20 NUMEROS QUE SE INGRESEN
  42.       for(a=0; a < 20; a++){
  43.  
  44.     cout << "Ingresa el numero de la posicion " << posicion++ << endl;
  45.         cin >> vector[a];
  46.  
  47.     }
  48.  
  49.     //LLAMAMOS A UNA FUNCION
  50.     procedimiento(vector);
  51.  
  52.     //TECLAZO
  53.      cin.get();
  54.  
  55.      return 0;
  56. }//FIN DEL PROGRAMA
  57.  


Salida:
Código:
byakko@linuxblade ~/Programas $ g++ -o programa elhacker.net.c 
byakko@linuxblade ~/Programas $ ./programa
Ingresa el numero de la posicion 1
1
Ingresa el numero de la posicion 2
1
Ingresa el numero de la posicion 3
1
Ingresa el numero de la posicion 4
1
Ingresa el numero de la posicion 5
2
Ingresa el numero de la posicion 6
3
Ingresa el numero de la posicion 7
4
Ingresa el numero de la posicion 8
5
Ingresa el numero de la posicion 9
6
Ingresa el numero de la posicion 10
7
Ingresa el numero de la posicion 11
8
Ingresa el numero de la posicion 12
9
Ingresa el numero de la posicion 13
10
Ingresa el numero de la posicion 14
0
Ingresa el numero de la posicion 15
0
Ingresa el numero de la posicion 16
0
Ingresa el numero de la posicion 17
12
Ingresa el numero de la posicion 18
12
Ingresa el numero de la posicion 19
15
Ingresa el numero de la posicion 20
21
0 se repite 3 veces
1 se repite 4 veces
12 se repite 2 veces


Título: Re: Vectores (Array) de N posiciones C++
Publicado por: iAmChapin_ en 10 Septiembre 2015, 01:46 am
Wow muchas gracias someRandomCode!! No pude darme cuenta que era algo tan sencillo como eso! Una vez mas y gracias a todos los que siempre me respoden, me ayudan a mejorar!!  ;-) colocare el tema como resuelto!!  ;-)


Título: Re: Vectores (Array) de N posiciones C++
Publicado por: someRandomCode en 10 Septiembre 2015, 02:03 am
No hay ningun problema :)
Por favor, tene a bien marcar el thread como resuelto para que gente con los mismos problemas tengan una referencia a una solucion :)