Duda sobre utilización de variables

Iniciado por Bl4ck3lf, 20 Diciembre 2012, 16:11 PM

0 Miembros y 2 Visitantes están viendo este tema.

Bl4ck3lf

Hola, espero no ser redundante en la pregunta ya que he buscado por el foro y por google para no molestar a nadie pero no he obtenido respuesta.

El punto es que la duda es una chorrada, no obstante no consigo solucionarla. Lo que quiero es usar una variable declarada en medio de un for. Para que me entendáis:

#include <stdio.h>

main(){
       int num1, num2, num3, num4, num5;
       int i=0;
       for(i=0;i<6;i++){
       printf("\nValor %d:",i);
       scanf("%d", num[i]);
       num[i]=getch();
       getch();
       printf("Valores: %d", num[i]);               
       }   
}

Lo que quiero es no tener que ir guardando en las variables una por una, sino que num vaya tomando valor 1,2,3...etc. Espero me hayáis entendido, gracias y disculpad la chorrada!
Dicen que el saber no ocupa lugar...

Danyfirex

te recomiendo que lo hagas con array algo así.


#include <stdio.h>


int main ()
{
  int value [10],i; // declarar array
  for (i = 0; i<10; i++)
   {
      value [i] = i; // cargamos el array
   }
  for (i = 0; i<10; i++)
   {
      printf ("\n%d",value [i]); // mostramos el array
   }
   getch();
  return 0;
 
}


saludos

leosansan

Cita de: Bl4ck3lf en 20 Diciembre 2012, 16:11 PM

Lo que quiero es no tener que ir guardando en las variables una por una, sino que num vaya tomando valor 1,2,3...etc.
Código (cpp) [Seleccionar]
#include <stdio.h>

main(){
  int num[5]={0};
  int i=0;
  for(i=0;i<5;i++){
    printf("\nValor %d:",i+1);
    num[i]=i+1;
    printf("Valores: %d", num[i]);
  }
}

Saluditos!.

Bl4ck3lf

#3
Amigo gracias por la pronta respuesta pero creo que no has comprendido la pregunta, igual soy yo el que se ha expresado mal.
scanf("%d",&num ?? );

Como hago para que después de &num lea el valor también de i, de tal manera que la salida sea: num1, num2, num3, num4, num5.

En shell script sería asi:
Código (dos) [Seleccionar]
for I in `seq 1 5`#Creo una secuencia de 1 a 5
do
echo "Valor: "#Le pido al usuario un valor
read num$I#guardo el valor en la variable num+1(el cual se incrementa cada vuelta del for)
done


Con lo que guardaría el valor que me pasen por teclado en num1, num2...etc. Un saludo y gracias!
Dicen que el saber no ocupa lugar...

SokarTefnut

Con el programa ejemplo te dará error,ya que intentas usar
Citarnum
(en la linea 11), sin haber declarado el array.

Yo cambiaría la linea 4 por int num[5]; para declaralo y no modificar nada mas del programa.




"Saber romper medidas de seguridad no hace que seas hacker, al igual que saber hacer un puente en un coche no te convierte en un ingeniero de automoción"
-- Eric Raymond -- http://en.wikipedia.org/wiki/Eric_S._Raymond

Bl4ck3lf

Chicos gracias por las respuestas, releyendo mi pregunta he visto que he sido yo el que se ha expresado mal.

Este es el ejercicio:

Escribir un programa que lea 5 números y encuentre el promedio, el máximo y el mínimo de esos valores.

Es simple de hacer, lo se, lo que quiero aprender a hacer es con un for pedirle al usuario los 5 números y que los guarde en su respectiva variable para poder trabajar después con ellas, no ir preguntando y guardando una por una, que es mas código, menos profesional y mas engorroso.
Dicen que el saber no ocupa lugar...

rir3760

Cita de: Bl4ck3lf en 20 Diciembre 2012, 16:54 PMlo que quiero aprender a hacer es con un for pedirle al usuario los 5 números y que los guarde en su respectiva variable para poder trabajar después con ellas, no ir preguntando y guardando una por una, que es mas código, menos profesional y mas engorroso.
En C no puedes generar el nombre de una variable en tiempo de ejecución (como muestras en el script con num + 1 ==> num1, num + 2 ==> num2, etc.).

En su lugar y como ya te comentaron debes utilizar un array, en cada iteracion del bucle utilizas "num[ i ]" para indicar el objeto con indice "i" en el array "num".

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

twins

#7
Coma ya te han comentado en c se deben declarar todas las variables antes de utilizarlas por lo tanto si queieres guardar 5 valores por separado debes de declarar 5 variables, por suerte en c existen los arrays o vectores que simplifican este tema y para acceder a un valor solo debes de conocer su posicion, saludos y asi es como queda el codigo  :)

#include<stdio.h>
int main(void){
int i,vector[5],mayor,menor;
float promedio=0;
for(i=0;i<5;i++){//llena el vector
printf("ingrese valor\n");
scanf("%i",&vector[i]);
}
for(i=0;i<5;i++)//imprime el vector
printf("[%i]",vector[i]);
puts("\n");
mayor=vector[0];
menor=vector[0];
for(i=0;i<5;i++){
promedio+=vector[i];
if(vector[i]>mayor)//busca el elemento mayor
mayor=vector[i];
if(vector[i]<menor)//busca el elemento menor
menor=vector[i];
}
printf("el mayor es %i\n",mayor);
printf("el menor es %i\n",menor);
printf("el promedio es %.2f\n",promedio/5);
        getchar();
getchar();
return(0);
}

Danyfirex

Cita de: twins en 20 Diciembre 2012, 17:43 PM
Coma ya te han comentado en c se deben declarar todas las variables antes de utilizarlas por lo tanto si queieres guardar 5 valores por separado debes de declarar 5 variables, por suerte en c existen los arrays o vectores que simplifican este tema y para acceder a un valor solo debes de conocer su posicion, saludos y asi es como queda el codigo  :)

#include<stdio.h>
int main(void){
int i,vector[5],mayor,menor;
float promedio=0;
for(i=0;i<5;i++){//llena el vector
printf("ingrese valor\n");
scanf("%i",&vector[i]);
}
for(i=0;i<5;i++)//imprime el vector
printf("[%i]",vector[i]);
puts("\n");
mayor=vector[0];
menor=vector[0];
for(i=0;i<5;i++){
promedio+=vector[i];
if(vector[i]>mayor)//busca el elemento mayor
mayor=vector[i];
if(vector[i]<menor)//busca el elemento menor
menor=vector[i];
}
printf("el mayor es %i\n",mayor);
printf("el menor es %i\n",menor);
printf("el promedio es %.2f\n",promedio/5);
return(0);
}


Te me adelantaste :S.

por cierto creo que declararte 6 valores en tu array. saludos

twins

No es posible todo esta comprobado  ;) talvez lo dices por esto for(i=0;i<5;i++) pues el 5<5 eso es falso por lo tanto no tomara el valor 5.