Necesito una ayuda con este programa

Iniciado por XV8, 14 Febrero 2011, 12:12 PM

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

XV8

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.


#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

Shut

#1
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:

#define TAM 4

#include <stdio.h>
#include <conio.h>

void comprobar(int * ,int *,int * );

int main(int argc, char *argv[])
{
   int vector[TAM];
   int i=0;
   int numbuscar=0;
   int repite=0;
   
   for(i=0;i<TAM;i++)
   {
   
    printf("Deme un numero");                  
    scanf("%d",&vector[i]);                                  
             
   }
   
       
   printf("Deme un numero a buscar las veces que se repitio");
   scanf("%d",&numbuscar);

//aqui paso el vector a la funcion para comprobar cuantas veces se repite el numero    
   
   comprobar(vector,&numbuscar,&repite);
   
   printf("El numero %d se repite %d veces \n",numbuscar,repite);
   
 
   
getch();
}//fin main

void comprobar (int *vector, int *numbuscar, int *repite)
{
     
   int i=0;
   for(i=0;i<TAM;i++)
   {
    if(vector[i]==*numbuscar)
    {
     *repite=*repite+1;//se que es raro ponerlo asi, pero sino no se incrementaba                  
    }                  
                     
   }
   

}






do-while

¡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.


#include <stdlib.h>
#include <stdio.h>

#define MAX_NUMEROS 20

struct Nodo
{
    int valor;
    int nrep;

    struct Nodo* mayor;
    struct Nodo* menor;
};
typedef struct Nodo Nodo;
typedef struct Nodo* NodoPtr;

void insertar(NodoPtr *root,int valor);
int repeticiones(NodoPtr root,int valor);
void liberar(NodoPtr *root);

int main(int argc, char *argv[])
{
    NodoPtr arbol = NULL;
    int leidos,numero,i;

    for(i = 0 ; i < MAX_NUMEROS ; i++)
    {
        printf("Introducir numero: ");

        while(!scanf("%d",&numero));
        while(getchar() != '\n');

        insertar(&arbol , numero);
    }

    printf("Buscar repeticiones del numero: ");

    while(!scanf("%d",&numero));
    while(getchar() != '\n');

    printf("%d repeticiones.\n",repeticiones(arbol,numero));

    printf("pulsar intro para continuar...");

    while(getchar() != '\n');

    liberar(&arbol);

    return 0;
}

void insertar(NodoPtr *root,int valor)
{
    if(!(*root))
    {
        (*root) = (Nodo*) malloc(sizeof(Nodo));

        (*root)->valor = valor;
        (*root)->nrep = 1;

        (*root)->mayor = NULL;
        (*root)->menor = NULL;

        return;
    }

    if(valor < (*root)->valor)
        insertar(&((*root)->menor) , valor);
    else if(valor > (*root)->valor)
        insertar(&((*root)->mayor) , valor);
    else
        (*root)->nrep++;

    return;
}

int repeticiones(NodoPtr root,int valor)
{
    if(!root)
        return 0;

    if(valor == root->valor)
        return root->nrep;

    if(valor < root->valor)
        return repeticiones(root->menor , valor);

    return repeticiones(root->mayor , valor);
}

void liberar(NodoPtr *root)
{
    if(!(*root))
        return;

    liberar(&((*root)->menor));
    liberar(&((*root)->mayor));

    free(*root);

    return;
}


iSaludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!