Duda sobre array en C.

Hola kepa_rios.
Me gustaría saber cómo hago para mostrar los mismos números almacenados en v[a], en el último bucle. Quiero que muestre los mayores de 10, pero a veces muestra los mismos y otras no. Está compilado en Borland C++ 4.5.
Muchas gracias por adelantado.
#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" 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, a=0;
int 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 = (rand() % 37);
printf(" %d", v);
}
//Aquí empezamos a contarlos
for (i=0;i<n;i++)
{
if ( v > 10 )
{
fflush(stdin);
cuantosmayores++;
v[a]=v;
printf ("\n\nV[a] tiene: %d", v[a]);
}
}
fflush(stdin);
printf ("\n\n\n *** Hay %d numeros mayores que 10 ***", cuantosmayores);
for (a=0;a<cuantosmayores;a++)
{
fflush(stdin);
printf ("\n\nLos numeros mayores que 10 son: %d", v[a]);
}
} //MAIN

1 Respuesta

Respuesta
1
Tienes sobretodo un error importante: No creas que por poner v (el nombre del vector) ya estás accediendo a una posición del vector. V es el nombre del vector, o, lo que es lo mismo, la dirección del primer elemento del vector.
Para acceder a un elemento del vector tienes que usar v o *(v+i)
Y luego otra cosa rara que veo es que v[a] son las primeras posiciones del vector, es decir, que estás poniendo en las primeras posiciones del vector, los números mayores de 10 que haya en el vector. Con esto estás perdiendo valores del vector, al machacarlos, pero no sé si esto es un inconveniente.
Prueba con este programa donde te he corregido estas cosas.
Suerte!
Quepa
www.cartagena99.com
#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" 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, a=0;
int 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 = (rand() % 37);
printf(" %d", v);
}
//Aquí empezamos a contarlos
for (i=0;i<n;i++)
{
if ( v > 10 )
{
fflush(stdin);
cuantosmayores++;
v[a++]=v;
printf ("\n\nV[a] tiene: %d", v[a]);
}
}
fflush(stdin);
printf ("\n\n\n *** Hay %d numeros mayores que 10 ***", cuantosmayores);

printf ("\n\nLos numeros mayores que 10 son: );
for (a=0;a<cuantosmayores;a++)
{
fflush(stdin);
printf ("\: %d", v[a]);
}


} //MAIN
No olvides puntuar bien y finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas