C/Visual C - Problema con acumulador

 
Vista:
sin imagen de perfil

Problema con acumulador

Publicado por Musiker (14 intervenciones) el 09/09/2011 11:45:13
Estoy haciendo un programa que genera "n" números aleatorios, mediante un contador muestra cuantos numeros mayores que 10 hay, y mediante un acumulador muestra los que son mayores de 10, pero hay un error al hacer ésto último.
El problema no sé si está en el acumulador o en el bucle for, pero no muestra los numeros mayores de 10. Lo he intentado de esta forma. ¿Alguien me podría ayudar? El programa está compilado en Borland C++ 4.5. Muchas gracias.


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


// "n" es el numero de numeros que el usuario desea que se generen.

// "v[i]" es el numero que sale cada vez.

// "i" muestra la posicion que ocupa cada numero (empezando desde 0).

// "cuantosmayores" es un contador que cuenta cuantos numeros mayores que 10 hay.

// "acummayores" es el acumulador que almacena los numeros que sean mayores que 10.


int main(void)
{


int *v, cuantosmayores=0;
int acummayores=0, n=0, i=0;




randomize();

printf("\n ***** N numeros 'aleatorios' ***** \n\n");
printf("\n ¿Cuantos numeros desea que se generen?: ");
scanf ("%d",&n);
fflush(stdin);



v = new int [n];


printf("\n\nLos %d numeros generados son:", n);


for (i=0; i<n; i++)
{
fflush(stdin);
v[i] = (rand() % 37);
printf(" %d", v[i]);
}



//Aquí empezamos a contarlos
for (i=0;i<n;i++)
{

if ( v[i] > 10 )
{
fflush(stdin);
cuantosmayores++;
acummayores=acummayores+i;
}


}//"FOR"


fflush(stdin);
printf ("\n\n\n\n *** Hay %d numeros mayores que 10 *** \n\n", cuantosmayores);


// Aqui se deben mostrar los numeros mayores que 10 acumulados anteriormente
fflush(stdin);
for (i=0;i<cuantosmayores;i++)
{
fflush(stdin);
printf ("\n\n Los numeros mayores que 10 son: %d", acummayores);
}


} //MAIN
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con acumulador

Publicado por renegal (2 intervenciones) el 09/09/2011 14:11:05
El error, en realidad es que el pgm que escribes no hace lo que dices; estás "contando" cuántos números > 10 hay y "la suma de los índices" de los > 10. Para mostrar "cuáles" son los > 10 deberías almacenarlos en otro vector. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con acumulador

Publicado por Musiker (14 intervenciones) el 10/09/2011 19:07:55
Muchas gracias por la respuesta. Creo que he conseguido acercarme al objetivo. Ahora he añadido un vector más, pero por ejemplo, en el caso de que salgan 5 números mayores de 10, no muestra esos 5 números, sino los 5 primeros números que se han generado.
Agradecería que me ayudárais un poco más.

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


// "n" es el numero de numeros que el usuario desea que se generen.

// "v[i]" es el numero que sale cada vez.

// "i" muestra la posicion que ocupa cada numero (empezando desde 0).

// "cuantosmayores" es un contador que cuenta cuantos numeros mayores que 10 hay.

// "acummayores" es el acumulador que almacena los numeros que sean mayores que 10.


int main(void)
{


int *v, cuantosmayores=0;
int acummayores[100], n=0, i=0;




randomize();

printf("\n ***** N numeros 'aleatorios' ***** \n\n");
printf("\n ¿Cuantos numeros desea que se generen?: ");
scanf ("%d",&n);
fflush(stdin);



v = new int [n];


printf("\n\nLos %d numeros generados son:", n);


for (i=0; i<n; i++)
{
fflush(stdin);
v[i] = (rand() % 37);
printf(" %d", v[i]);
}





//Aquí empezamos a contarlos
for (i=0;i<n;i++)
{

if ( v[i] > 10 )
{
fflush(stdin);
cuantosmayores++;


for (i=0;i<cuantosmayores;i++)
{
fflush(stdin);
//getch();
acummayores[i]=v[i];
}

}

}



fflush(stdin);
printf ("\n\n\n *** Hay %d numeros mayores que 10 ***", cuantosmayores);



for (i=0;i<cuantosmayores;i++)
{
fflush(stdin);
printf ("\n\nNumero %d. Los numeros mayores que 10 son: %d", i+1,acummayores[i]);
}

} //MAIN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con acumulador

Publicado por renegal (2 intervenciones) el 13/09/2011 20:45:03
Sugiero enfáticamente que revises la lógica de tu programación ya que allí está el problema, el programa que hace lo que vos quieres seria mas o menos asi:

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

// "n" es la cantidad de números que el usuario desea que se generen
// "v[]" es el vector que contendrá los números generados
// "i" es la posición de cada número generado, en el vector "v[]"
// "cuantosmayores" es el acumulador que almacena la cantidad de números > 10
// "x[]" es el vector que contendrá los números > 10
// "j" es la posición de cada número > 10, en el vector "x[]"

int main(void)
{
int v[100], x[100];
int cuantosmayores, n=0, i=0, j=0;

/ randomize();

printf("\n *** N números 'aleatorios' *** \n\n");
printf("\n Cuántos números desea que se generen?: ");
scanf("%d",&n);

/ v=new int [n];
/ x=new int[n];

printf("\n\n Los %d números generados son: \n",n);

for(i=0; i<n; i++)
{
fflush(stdin);
// almacenamos un número aleatorio en la posición "i" del vector "v[]"
v[i]=(rand() % 37);
printf("%4d",v[i]);

// si es > 10, lo almacenamos en la posición "j" del vector "x[]"

if(v[i]>10)
{
x[j++]=v[i];
++cuantosmayores;
}
}//for

// ahora mostramos los números > 10 almacenados en el vector "x[]"

printf("\n Los números > 10 son: \n\n");
for(i=0; i<cuantosmayores; i++)
{
ffllush(stdin);
printf("%4d",x[i]);
}

}//main

Obviamente no he utilizado el Borland c porque no lo tengo, así que vos adaptalo al mismo. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con acumulador

Publicado por Andres (1 intervención) el 16/09/2011 21:58:21
/*Estoy haciendo un programa que genera "n" números aleatorios, mediante un contador muestra cuantos numeros mayores que 10 hay, y mediante un acumulador muestra los que son mayores de 10, pero hay un error al hacer ésto último.
El problema no sé si está en el acumulador o en el bucle for, pero no muestra los numeros mayores de 10. Lo he intentado de esta forma. ¿Alguien me podría ayudar? El programa está compilado en Borland C++ 4.5. Muchas gracias.
*/

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


// "n" es el numero de numeros que el usuario desea que se generen.

// "v[i]" es el numero que sale cada vez.

// "i" muestra la posicion que ocupa cada numero (empezando desde 0).

// "cuantosmayores" es un contador que cuenta cuantos numeros mayores que 10 hay.

// "acummayores" es el acumulador que almacena los numeros que sean mayores que 10.

// comprobado para cualquier cantidad de valores que desees generar

int main(void)
{


int *v, cuantosmayores=0;
int *acummayores, n=0, i=0; // acumula los valores mayores de 10 y solo esos

randomize();

printf("\n ***** N numeros 'aleatorios' ***** \n\n");
printf("\n ¿Cuantos numeros desea que se generen?: ");
scanf ("%d",&n);
fflush(stdin);

v = new int [n];
acummayores = new int [n]; //generas los objetos

printf("\n\nLos %d numeros generados son:", n);


for (i=0; i<n; i++)
{
fflush(stdin);
v[i] = (rand() % 37);
printf(" %d", v[i]);
}



//Aquí empezamos a contarlos
for (i=0;i<n;i++){
if ( v[i] > 10 ){
fflush(stdin);
acummayores[cuantosmayores]=v[i]; //copias los valores mayores de 10 en ese arreglo esta te faltó
cuantosmayores++;
}
}//"FOR"


fflush(stdin);
printf ("\n\n\n\n *** Hay %d numeros mayores que 10 *** \n\n", cuantosmayores);


// Aqui se deben mostrar los numeros mayores que 10 acumulados anteriormente
printf ("\n\n Los numeros mayores que 10 son: ");
fflush(stdin);
for (i=0;i<cuantosmayores;i++)
{
fflush(stdin); //Finalmente los imprimes esto te faltó aquí te lo modifiqué es la
printf ("%5d", acummayores[i]); // misma variable que tu pusute solo que ahora es un arreglo que contiene los valores
}

printf("\n\n\n\n");


} //MAIN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con acumulador

Publicado por Musiker81 (14 intervenciones) el 16/09/2011 22:31:21
Lo he podido solucionar únicamente con vuestra ayuda. Muchas gracias a todos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar