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

consulta sobre codigo

Estas en el tema de consulta sobre codigo en el foro de C/C++ en Foros del Web. hola a todos,encontre un ejercicio resuelto por un ex profesor mio y viendolo hay parte del programa que no lo he entendido,porfavor si me l ...
  #1 (permalink)  
Antiguo 05/04/2010, 12:56
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 2 meses
Puntos: 2
Pregunta consulta sobre codigo

hola a todos,encontre un ejercicio resuelto por un ex profesor mio y viendolo hay parte del programa que no lo he entendido,porfavor si me l podeis traducir os lo agradeceria.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4.  
  5. void main(void)
  6. {
  7.     int v[22], i, izq, dcha, pos_cent=0, valor;
  8.     srand(time(NULL));
  9.     v[0]=rand()%11;
  10.     printf("\nv[1]=%d",v[0]);
  11.     for(i=1;i<22;i++){
  12.         v[i]=v[i-1]+(rand()%10)+1;// al ejecutar me muestra valores sobre 100 y eso no me cuadra...
  13.         printf("\nv[%d]=%d",i+1,v[i]);
  14.     }
  #2 (permalink)  
Antiguo 05/04/2010, 15:05
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: consulta sobre codigo

Ten en cuenta que al elemento en la posicion i se le esta sumando el valor del elemento anterior.
Cita:
v[i]=v[i-1]+(rand()%10)+1
si no estuviera sumando, mostraria valores menores que 11
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #3 (permalink)  
Antiguo 05/04/2010, 15:29
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: consulta sobre codigo

hola,mhax gracias por responder .
veras en el enunciado del ejercicio que no lo puse ahi mi primer error...

Es cargar un vector de 22 elementos enteros de manera aleatoria .. y el codigo que no entendia era este:pondre como comentario mis dudas y lo que creo ke hace el codigo ..

v[0]=rand()%11; // en la posicion 0 del vector guardo un aleatorio (valores del 1 al 11)
printf("\nv[1]=%d",v[0]);/* con esto pinto en el formato v[1]=(aleatorio que se genero en la linea anterior.. */
for(i=1;i<22;i++){ //recorro el vector desde la posicion 1 hasta la posicion 21.
v[i]=v[i-1]+(rand()%10)+1;// el valor de v[i] va a tener el valor del anterior sumandole un aleatorio con valores del 1 al 10 ,y el mas uno seria sumarle uno a la semilla no? es decir seria con valores superiores a 1 y menores o iguales a 10 sumandole el anterior? por ejemplo si el anterior es un 90 el valor aleatorio siguiente seria un 100 por ejemplo? ... eso esta pensando,... pero no me cuadra porque al generar los valor me aparecio un 133 ..
  #4 (permalink)  
Antiguo 06/04/2010, 09:35
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: consulta sobre codigo

Cita:
pero no me cuadra porque al generar los valor me aparecio un 133 ..
es como si estuvieras aculando(sumando) los valores, date cuenta que un numero es mayor que el anterior, ya que es la suma del anterior mas otro numero de 1 al 10 mas 1.

supongamos que el primer numero es 6:

v[0] -> 6
v[1] -> v[0] + rand+1 -> 6 + 7 = 13
v[2] -> v[1] + rand+1 ->13 + 5 = 18
.
.
.
v[10] -> v[9] + rand +1 -> 56 + 8 = 64

puede que llegue a 100 o a 1xx, aumenta rapidamente..
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #5 (permalink)  
Antiguo 07/04/2010, 01:11
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: consulta sobre codigo

Hola,gracias por la explicacion era un codigo de mi profe e el cual nos indicaba que era el mas eficiente tenia dudas porque yo lo habia realizado de otra manera primero cargaba un vector con elementos aleatorios y luego por el metodo de la burbuja los ordenaba ascendentemente pero efectivamente el de mi profe es el mas corto y conciso como se diria.

gracias Mhax
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 01:44.