Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: XV8 en 14 Febrero 2011, 12:12 pm



Título: Necesito una ayuda con este programa
Publicado por: XV8 en 14 Febrero 2011, 12:12 pm
La idea es un programa que lea x números (en este ejemplo son 10), que recibe del usuario (números entre 1 y 10) y al final del programa pedirá al usuario que diga que número quiere ver y le mostrará cuantas veces se repite.

Código:
#include <iostream>

const int MAXARRAY = 5;
using namespace std;


int miFuncion (int numero , int contador);

struct contNumeros
{
int numero;


} contNumeros [MAXARRAY];


//:::::::::::::::::::::::::::::::::::::::::::::::::::


int main()
{
//CONTADORES:::::::::::::::::::::::::::::::
int contador1 = 0;
int contador2 = 0;
int contador3 = 0;
int contador4 = 0;
int contador5 = 0;
int contador6 = 0;
int contador7 = 0;
int contador8 = 0;
int contador9 = 0;
int contador10 = 0;
//:::::::::::::::::::::::::::::::::::::::::::
int x=0;


cout << "Introduce " << MAXARRAY << " números: " << endl;


int i = 0;
while (i < MAXARRAY)
{
cout << "Número " << i + 1 << " : ";
{
cin >> contNumeros[i].numero;

}

if (contNumeros[i].numero < 1 || contNumeros[i].numero > 10)
{
cout << "Introduzca números entre el 1 y el 10" << endl;
}
else
i++;
}
//::::::::::::::::::::::::::


cout << "Introduzca el número que quiere ver: ";
cin >> x;
if (x == 1)
{
cout << "El número 1 se repite: " << contador1 << " veces." << endl;
}
if (x == 2)
{
cout << "El número 2 se repite: " << contador2 << " veces." << endl;
}
if (x == 3)
{
cout << "El número 3 se repite: " << contador3 << " veces." << endl;
}
if (x == 4)
{
cout << "El número 4 se repite: " << contador4 << " veces." << endl;
}
if (x == 5)
{
cout << "El número 5 se repite: " << contador5 << " veces." << endl;
}
if (x == 6)
{
cout << "El número 6 se repite: " << contador6 << " veces." << endl;
}
if (x == 7)
{
cout << "El número 7 se repite: " << contador7 << " veces." << endl;
}
if (x == 8)
{
cout << "El número 8 se repite: " << contador8 << " veces." << endl;
}
if (x == 9)
{
cout << "El número 9 se repite: " << contador9 << " veces." << endl;
}
if (x == 10)
{
cout << "El número 10 se repite: " << contador10 << " veces." << endl;
}


return 0;
}


int miFuncion (int numero, int contador)
{

int final = 0;
int i = 0;
while (i<MAXARRAY)
{
contNumeros[i].numero/1;
if (final == 1)
  {
  contNumeros[i].contador ++;
  }
 

    }
}

Lo que quería hacer era que en la función coja los valores introducidos por el usuario y los divida a todos entre los números del 1 al 10 cada vez que de como resultado 1 se sumara 1 a su contador, el problema es que no soy capaz de que el programa me haga esa división


Título: Re: Necesito una ayuda con este programa
Publicado por: Shut en 14 Febrero 2011, 21:31 pm
Hola, supongo que ya lo tendras solucionao, pero ya que estaba por aqui queria poner otra forma de hacerlo. Por poner una forma sin tantos if y darte otras ideas.
Lo ultimo que pones de dividir no entendi muy bien lo que quieres decir que hay que hacer.Si quieres aclaralo un poco, aunque por lo que mire la i con la que recorres el vector de la estructura no lo incrementas.

Ahi va otra manera, de entre tantas que hay xdd  :silbar:

Código
  1. #define TAM 4
  2.  
  3. #include <stdio.h>
  4. #include <conio.h>
  5.  
  6. void comprobar(int * ,int *,int * );
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10.    int vector[TAM];
  11.    int i=0;
  12.    int numbuscar=0;
  13.    int repite=0;
  14.  
  15.    for(i=0;i<TAM;i++)
  16.    {
  17.  
  18.     printf("Deme un numero");                  
  19.     scanf("%d",&vector[i]);                                  
  20.  
  21.    }
  22.  
  23.  
  24.    printf("Deme un numero a buscar las veces que se repitio");
  25.    scanf("%d",&numbuscar);
  26.  
  27. //aqui paso el vector a la funcion para comprobar cuantas veces se repite el numero    
  28.  
  29.    comprobar(vector,&numbuscar,&repite);
  30.  
  31.    printf("El numero %d se repite %d veces \n",numbuscar,repite);
  32.  
  33.  
  34.  
  35. getch();
  36. }//fin main
  37.  
  38. void comprobar (int *vector, int *numbuscar, int *repite)
  39. {
  40.  
  41.    int i=0;
  42.    for(i=0;i<TAM;i++)
  43.    {
  44.     if(vector[i]==*numbuscar)
  45.     {
  46.      *repite=*repite+1;//se que es raro ponerlo asi, pero sino no se incrementaba                  
  47.     }                  
  48.  
  49.    }
  50.  
  51.  
  52. }
  53.  






Título: Re: Necesito una ayuda con este programa
Publicado por: do-while en 15 Febrero 2011, 01:45 am
¡Buenas!

Yo tampoco entiendo muy bien a que te refieres con eso de las divisiones...

Aqui tienes otra solucion mas, no se si te servira, porque viendo tu codigo me parece que no habras visto muchas de las cosas que aparecen, pero asi puedes ir investigando un poco.

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. #define MAX_NUMEROS 20
  5.  
  6. struct Nodo
  7. {
  8.    int valor;
  9.    int nrep;
  10.  
  11.    struct Nodo* mayor;
  12.    struct Nodo* menor;
  13. };
  14. typedef struct Nodo Nodo;
  15. typedef struct Nodo* NodoPtr;
  16.  
  17. void insertar(NodoPtr *root,int valor);
  18. int repeticiones(NodoPtr root,int valor);
  19. void liberar(NodoPtr *root);
  20.  
  21. int main(int argc, char *argv[])
  22. {
  23.    NodoPtr arbol = NULL;
  24.    int leidos,numero,i;
  25.  
  26.    for(i = 0 ; i < MAX_NUMEROS ; i++)
  27.    {
  28.        printf("Introducir numero: ");
  29.  
  30.        while(!scanf("%d",&numero));
  31.        while(getchar() != '\n');
  32.  
  33.        insertar(&arbol , numero);
  34.    }
  35.  
  36.    printf("Buscar repeticiones del numero: ");
  37.  
  38.    while(!scanf("%d",&numero));
  39.    while(getchar() != '\n');
  40.  
  41.    printf("%d repeticiones.\n",repeticiones(arbol,numero));
  42.  
  43.    printf("pulsar intro para continuar...");
  44.  
  45.    while(getchar() != '\n');
  46.  
  47.    liberar(&arbol);
  48.  
  49.    return 0;
  50. }
  51.  
  52. void insertar(NodoPtr *root,int valor)
  53. {
  54.    if(!(*root))
  55.    {
  56.        (*root) = (Nodo*) malloc(sizeof(Nodo));
  57.  
  58.        (*root)->valor = valor;
  59.        (*root)->nrep = 1;
  60.  
  61.        (*root)->mayor = NULL;
  62.        (*root)->menor = NULL;
  63.  
  64.        return;
  65.    }
  66.  
  67.    if(valor < (*root)->valor)
  68.        insertar(&((*root)->menor) , valor);
  69.    else if(valor > (*root)->valor)
  70.        insertar(&((*root)->mayor) , valor);
  71.    else
  72.        (*root)->nrep++;
  73.  
  74.    return;
  75. }
  76.  
  77. int repeticiones(NodoPtr root,int valor)
  78. {
  79.    if(!root)
  80.        return 0;
  81.  
  82.    if(valor == root->valor)
  83.        return root->nrep;
  84.  
  85.    if(valor < root->valor)
  86.        return repeticiones(root->menor , valor);
  87.  
  88.    return repeticiones(root->mayor , valor);
  89. }
  90.  
  91. void liberar(NodoPtr *root)
  92. {
  93.    if(!(*root))
  94.        return;
  95.  
  96.    liberar(&((*root)->menor));
  97.    liberar(&((*root)->mayor));
  98.  
  99.    free(*root);
  100.  
  101.    return;
  102. }
  103.  

iSaludos!