Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Array, llenar con numeros aleatorios y buscar uno.

Estas en el tema de Array, llenar con numeros aleatorios y buscar uno. en el foro de C/C++ en Foros del Web. Buenos dias Estoy haciendo una serie de ejercicios, con arreglos. Me gustaria que me dijeran si este codigo puede ser optimizado. La idea es que ...
  #1 (permalink)  
Antiguo 25/07/2015, 13:26
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 7
Array, llenar con numeros aleatorios y buscar uno.

Buenos dias

Estoy haciendo una serie de ejercicios, con arreglos. Me gustaria que me dijeran si este codigo puede ser optimizado.

La idea es que genere 20 numeros aleatorios, y que luego se pueda introducir uno, para comprobar si esta o no entre esos 20. El codigo funciona bien, pero me gustaria saber si se puede mejorar, o si hay otras formas de hacerlo. Gracias por su tiempo.

Código:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
  //Que rellene un array con 20 números y luego busque un número concreto. -
  srand(time(NULL));
  printf("Aqui hay un array con 20 numeros aleatorios. Escriba y busque un numero en concreto.");
  bool on = true;
  int array[20];
  int s;
  for(s = 0; s <= 20; s++)
  {
  array[s] = (rand()%20)+1;
  }
  printf("\n");
  printf("Escriba el numero a buscar");
  int bus;
  bus = 0;
  scanf("%d",&bus);
  while(getchar()!='\n');
  
  for(s = 0; s <= 20; s++)
  {
        if(bus == array[s])
        {
               printf("\n El numero %d se encuentra en el arreglo, en la posicion %d \n", bus, (s+1));
               on = true;
        }
        
  }
  if(on != true)
  { 
        printf("\n El numero no esta.\n");
  }       
  for(s = 0; s <= 20; s++)
  {
  printf("%d ", array[s]);      
  }
  getchar();
  return 0;
}
__________________
Mi pagina Web: http://www.actiweb.es/simplecreations/
Desarrollo de Juegos para PC en 2D
  #2 (permalink)  
Antiguo 26/07/2015, 01:32
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Array, llenar con numeros aleatorios y buscar uno.

Sí... y mucho. Por empezar a que estas haciendo mal lo de los indices del array. En C/C++ se empieza a contar de cero, y se termina en MAX-1 seria algo así

#define MAX 5

int main(){

int array[MAX];
....

Ahora veamos... Si se cuanta desde cero a MAX-1, seria 0, 1, 2, 3 y 4. ¿Cuantos números son? ¿5?¿6?
El ejemplo en for seria:

for( i=0; i < MAX; i++){ // i<MAX es lo mismo que i menor que MAX

array[i]=(rand()%20)+1;
}

//como ves debes detenerte antes de MAX y no cuando se i <= MAX por que si no va acontecer que hemos reservado 5 casillas y rellenamos 6 (0, 1, 2, 3, 4, 5. ¿Seis no?), o sea nos hemos salido de rango. ¡Muy malo eso eh! Empieza por entender mejor los indices de los arrays.

i<=MAX va hacer que for continúe trabajando mientras i sea menor o igual, en ese caso como incrementas tu indice s de uno en uno va parar justo cuando s sea 20 pero debería parar cuando s fuera 20-1, o sea 19. cambie esos <= por < o te va a salir de rango en todos los for.
  #3 (permalink)  
Antiguo 12/08/2015, 09:47
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 7
De acuerdo Respuesta: Array, llenar con numeros aleatorios y buscar uno.

Gracias , lo he aplicado y se soluciono el numero extra que solia aparecer
__________________
Mi pagina Web: http://www.actiweb.es/simplecreations/
Desarrollo de Juegos para PC en 2D

Etiquetas: char, funcion, int, numero, numeros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:59.