• Inicio
  • Buscar
  • Ingresar
  • Registrarse

    Google Discover va a implantar vídeos de anuncios como ya está haciendo en Youtube Shorts

    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • C / C++ »
    • [Solucionado] contar apariciones de 3 números usando arrays
    • Imprimir
    Páginas: [1]   Ir Abajo

    Autor Tema: [Solucionado] contar apariciones de 3 números usando arrays  (Leído 1775 veces)

    Desconectado r1ghtz0

    • { L4 } Geek
    • ****
    • Mensajes: 303
    • Estudiando
      • Ver Perfil
    [Solucionado] contar apariciones de 3 números usando arrays
    « en: Junio 09, 2013, 04:10:22 am »
    Buenas, quisieran que me ayudaran con este ejercicio por favor, que no entiendo por qué solo cuenta las apariciones del cero (0) pero las apariciones del 1 y 2 me dan un resultado extraño.

    El ejercicio en sí dice que: Escribas un programa que cuente las veces que aparece los número 0, 1 y 2.

    Esta es la versión del manual que estoy leyendo:

    Código: [Seleccionar]
    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #define MAX 3

    int main(){

    int num, cont[MAX], i;

    for(i= 0 ; i<MAX ; i++){
    cont[i]= 0;

    scanf("%d", &num);

    while(num != -1){
    if((num >= 0) && (num <= MAX)){
    cont[num]++;
    scanf("%d", &num);
    }

    }

    for(i= 0 ; i<3 ; i++){
    printf("nContador[%d]= %dn", i, cont);
    }

    }

    return 0;
    }

    En este código de arriba no entiendo que es lo que hace el primer for, si a mi parecer basta tan solo con un while y más abajo un for. Así como está aquí en mi versión

    Mi versión:
    Código: [Seleccionar]
    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #define MAX 3

    int main(){

    int num, cont[MAX], i;

    scanf("%d", &num);

    while(num >= 0 && num <= 2){
    if((num >= 0) && (num <= 2)){
    cont[num]++;
    scanf("%d", &num);
    }

    }

    for(i= 0 ; i<2 ; i++){
    printf("nContador[%d]= %dn", i, cont);
    }

    return 0;
    }

    « Última modificación: Junio 10, 2013, 08:57:41 pm por r1ghtz0 »
    En línea

    Desconectado SirValkennor_

    • { L0 } Ñuub
    • Mensajes: 32
      • Ver Perfil
    Re:ayuda, contar apariciones de 3 números usando arrays
    « Respuesta #1 en: Junio 09, 2013, 07:27:26 am »
    Código: [Seleccionar]
    Hola chicos como estan?
    bueno ya que esta semana practique el uso basico de las estructuras For y While, se me ocurrio postear un ejercicio sencillo realizado con las mismas. Abajo puse las diferencias que hay entre el uso de una u otra estructura.

    El ejercicio es el siguiente:

    - Se pide ingresar 5 numeros y calcular su media.


    Usando For                                       

    #include<stdio.h>                             
    #include<conio.h>
    void main (void)                                   
    {                                                     
    float contar, suma=0,num, prom;                   
    clrscr();                                           
    for (contar=0;contar<5;contar++)
    {                                                     
    printf ("Ingrese un Nº %f =", contar+1);   
    scanf ("%f", &num);                               
    suma=suma+num;                               
    }                                                     
    prom=suma/5;                                     
    printf("\n\n El promedio es: %f", prom);   
    printf ("\n Presione una tecla para salir:");
    getche();                                           
    }                                                                                                               


    Usando While

    #include<stdio.h>
    #include<conio.h>
      void main (void)
      {
         float contar=0, suma=0,num, prom;
           clrscr ();
             while (contar<5)
        {
          printf ("Ingrese un N§ %f = ",contar+1);
          scanf ("%f",&num);
          suma=suma+num;
                contar=contar+1;
        }
         prom=suma/5;
         printf ("\n\nEl promedio es = %f", prom);
         printf ("\nPresione una tecla para salir:");
         getche();
      }

    Nota:

    - Resalte en negrita las diferencias entre ambas estructuras.

    Diferencias:

    1) Cuando se declaran las variables, la estructura For no necesita que inicializemos la variable contador que en nuestro ejercicio se llama contar, ya que:

    For (valor inicial; condicion;incremento o decremento)
        { sentencias
        }

    Valor inicial: es donde justamente inicializamos el contador. Por ej:b=0.
    Condicion: aqui ponemos el limite del contador. Por ej: b<10.
    Incremeto o decremento: es incremento o decremento del contador.
    Por ej: b++ (o b=b+1).

    2) En el While el  incremento o decremento del contador se debe escribir en donde se escriben las sentencias
         
      While (condicion)
           {sentencia1
             sentencia2   
             sentencian
             incremento o decremento del contador (p.e u=u+1)     
            }
         

    Condicion: aca se pone el limite del contador ej: h<10

    no entiendo que quieres hacer :S
    En línea

    Desconectado Ediuman007

    • { L0 } Ñuub
    • Mensajes: 3
      • Ver Perfil
    Re:ayuda, contar apariciones de 3 números usando arrays
    « Respuesta #2 en: Junio 09, 2013, 07:48:44 am »
    Espero haberte ayudado .... hay dejo explicado en el codigo algunas cosas y nada mas se tubo que corregir algunos errores de llaves que suele pasar cuando pragramamos  :-\
    Código: [Seleccionar]
    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <conio.h>  // para uso del getch()
    #define MAX 3

    int main(){

    int num, cont[MAX], i;
    // Inicializar el array
    for(i= 0 ; i<MAX ; i++){
    cont[i]= 0; }
    printf("Para salir ingrese numero: -1\n"); // el "\n" sirve como salto de linea
    printf("nUMERO: ");
    scanf("%d", &num);

    while(num != -1){
    if((num >= 0) && (num < MAX)){ //Condicion que incrementara en uno
    cont[num]++; }    // a la posicion del array si se culmple la condicion
    printf("nUMERO: ");
    scanf("%d", &num);}

    for(i= 0 ; i<3 ; i++){
    printf("Contador[%d]= %d \n", i, cont[i]);
    }
    getch(); // Pausa hasta presionar alguna tecla
    return 0;
    }
    « Última modificación: Junio 09, 2013, 08:26:04 am por Ediuman007 »
    En línea

    Desconectado samuellopz

    • { L0 } Ñuub
    • Mensajes: 16
      • Ver Perfil
    Re:ayuda, contar apariciones de 3 números usando arrays
    « Respuesta #3 en: Junio 09, 2013, 08:28:49 pm »
    buenas lo primero te dejo aquí mi trozo de código por si te sirve de ayuda y puedes hacer un código propio tuyo y no versionar el del manual
    Código: [Seleccionar]
    #include <iostream>
    using namespace std;

    int contar(int t[], int n){
        int cont[]={0,0,0};
        for(int i=0;i<n;i++) if((t[i]<=3)&&(t[i]>=1)) cont[(t[i]-1)]++;
        for(int i=0;i<3;i++) cout<<i+1<<"\t"<<cont[i]<<endl;
        }
               
    void generar(int n){
         system("cls");
         int t[n];
         for(int i=0;i<n;i++) cin>>t[i]; //t[i]=rand()%3 + 1; si quieres que se genere aleatorio, el %3 + 1 es para que genere un numero entre 1 y 3 si cambias el 3 por 8 lo genera entre 1 y 8
         contar(t,n);
         }
               
    int main(){
        int n;
        cout<<"tamano del vector a crear: "<<endl;
        cin>>n;
        generar(n);
        system("pause");
        return 0;
    }


    y contestando a tu pregunta puede ser que te salgan cosas extrañas porque declaras cont[MAX] pero como no inicializas con un valor, cada posición del array tiene un valor basura (que a saber cuál es, lo mismo es 1999986 que 789) si observas en el caso mio te he puesto cont[]={0,0,0} (si inicializas no hace falta poner el tamaño)

    espero haberte sido de ayuda
    En línea

    Desconectado r1ghtz0

    • { L4 } Geek
    • ****
    • Mensajes: 303
    • Estudiando
      • Ver Perfil
    Re:ayuda, contar apariciones de 3 números usando arrays
    « Respuesta #4 en: Junio 10, 2013, 08:57:06 pm »
    Aaah ok, ya lo e comprendido... La idea de el primer for es poner a cero (0) todas las posiciones de la rrays, por eso es que solo me contaba las apariciones de los ceros y los otros dos número me daban resultados extraños. El error mío era que estaba metiendo el while y el segundo for todo dentro del primer for, en el manual que tengo aparecen los for sin llaves por eso era que no entendía el primero.
    En línea

    • Imprimir
    Páginas: [1]   Ir Arriba
    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • C / C++ »
    • [Solucionado] contar apariciones de 3 números usando arrays
     

    • SMF | SMF © 2013, Simple Machines
    • XHTML
    • RSS
    • WAP2
    Va un mudo y le dice a un sordo: Hack x Crack usa cookies. Pues eso... Learn more