Vectores (Array) de N posiciones C++

Iniciado por iAmChapin_, 7 Septiembre 2015, 08:32 AM

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

iAmChapin_

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:



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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main(){
int vector[20];
  int i;
  int resultado;

  for (i=0; i<20; i++){

  cout << "Ingresa 20 numeros: "; cin >> vector[i]; // HASTA QUE SE INGRESEN 20 NUMEROS SALE DEL CICLO
     }

//CUANTAS VECES SE INGRESARON LOS NUMEROS
  for (i=0; i<20; i++){
  if (vector[1]==i){
      resultado++;
     }
     }
//IMPRIMIMOS QUE NUMEROS SE REPITIERON

     cout << "El numero " << vector << "esta repetido " << resultado << " veces";

  cin.get();
  return 0;
}


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!

ivancea96

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.

Bob1098

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.

iAmChapin_

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 (cpp) [Seleccionar]
#include <iostream>

using namespace std;

void procedimiento(int a[]){

int contador[20] = {0};
int x;
int i;


//LLENAMOS LA VARIABLE CONTADOR DE LOS NUMEROS INGRESADOS PARA DESPUES REVISARLOS
       for (i = 0; i <= 20; i++)
       {
        for (x = 0; x <= 20; x++)
          {
             if (a[i] == x)
             {
              contador[x]++;
             }
          }

       }

       //CON ITERACIONES REVISAMOS LOS NUMEROS PARA VER CUANTAS VECES SE REPITIERON
       for (i = 0; i <= 20; i++)
       {
           if (contador[i] != 0)
           {
              if (contador[i] == 1)
              {
              //NO HAGO NADA PORQUE EL NUMERO SOLO SE REPITE UNA VEZ
              }
              else
              {
              //IMPRIMO CUANTAS VECES SE REPITE UN NUMERO INGRESADO
              cout << i << " se repite " << contador[i] << " veces" << endl;
              }
           }
       }
}

int main(){//INICIO DEL PROGRAMA

    int vector[20];
    int a;
    int posicion = 1;

    //LLENAMOS EL VECTOR CON 20 NUMEROS QUE SE INGRESEN
       for(a=0; a < 20; a++){

      cout << "Ingresa el numero de la posicion " << posicion++ << endl;
         cin >> vector[a];

     }

     //LLAMAMOS A UNA FUNCION
     procedimiento(vector);

      //TECLAZO
      cin.get();

      return 0;
}//FIN DEL PROGRAMA


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



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

someRandomCode

Código (cpp) [Seleccionar]

#include <iostream>

using namespace std;

void procedimiento(int a[]){

int contador[20] = {0};
int x;
int i;


//LLENAMOS LA VARIABLE CONTADOR DE LOS NUMEROS INGRESADOS PARA DESPUES REVISARLOS
       for (i = 0; i < 20; i++)
       {
        for (x = 0; x < 20; x++)
          {
             if (a[i] == x)
             {
              contador[x]++;
             }
          }

       }

       //CON ITERACIONES REVISAMOS LOS NUMEROS PARA VER CUANTAS VECES SE REPITIERON
       for (i = 0; i < 20; i++)
       {
           if (contador[i]>1)
{   
cout << i << " se repite " << contador[i] << " veces" << endl;
                }
       }
}

int main(){//INICIO DEL PROGRAMA

    int vector[20];
    int a;
    int posicion = 1;

    //LLENAMOS EL VECTOR CON 20 NUMEROS QUE SE INGRESEN
       for(a=0; a < 20; a++){

      cout << "Ingresa el numero de la posicion " << posicion++ << endl;
         cin >> vector[a];

     }

     //LLAMAMOS A UNA FUNCION
     procedimiento(vector);

      //TECLAZO
      cin.get();

      return 0;
}//FIN DEL PROGRAMA



Salida:

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


iAmChapin_

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!!  ;-)

someRandomCode

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 :)