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

Nombre de variables automatico guardado en array para reutilizar función

Estas en el tema de Nombre de variables automatico guardado en array para reutilizar función en el foro de C/C++ en Foros del Web. El caso es por una parte tengo esta función en C, la cual quiero reutilizar para varias validar varias variables Código: #include<stdio.h> int Validar() { ...
  #1 (permalink)  
Antiguo 14/11/2011, 10:15
 
Fecha de Ingreso: abril-2011
Ubicación: Alicante
Mensajes: 52
Antigüedad: 13 años
Puntos: 3
Pregunta Nombre de variables automatico guardado en array para reutilizar función

El caso es por una parte tengo esta función en C, la cual quiero reutilizar para varias validar varias variables
Código:
#include<stdio.h>

int Validar()
{
    int res=-1;
    int parametro;
     do{  
           printf("\nIntroduce parametro: ");//aqui quiero que en vez de parametro imprima el nombre de la variable guardado en el array
           res=scanf("%d",&parametro);  
                    if(parametro<=0 || res==0)
                    {
                            printf("\nERROR!!!!");
                            fflush(stdin);//limpio buffer
                    }                
     }while(parametro<=0 || res==0);//si parametro es positivo y scanf valido 
     return(parametro);//devuelvo parametro validado
}
int main()
{
    int alt=0,bas=0,res=-1;
    alt=Validar();
    printf("\nAltura = %d",alt);
    
printf("\n");
system("pause");
}
Y por otra parte tengo este otro trozo de codigo:
Código:
#include<stdio.h>
int main()
{
    int parametro;
    char param[10];
    char c;
    int i;
    int x=0;
    int j=0;
    char nom_var[21]="altura,base,espacios";//nombre de las variables
        for(i=0;nom_var[i]!='\0';i++)
        {
            c=nom_var[i]; 
            param[j]=c;
            if(c==',')
            {       
               param[j]='\0';
            } 
            else{ 
               param[j]=c;
            }
        printf("%s",param); 
        }

printf("\n");
system("pause");
}
En fin el caso es que mi intención es que se sustituya el nombre de la variable parametro por los que contiene el array, es decir, (altura,base,espacios), cada vez que llamo a la función Validar, no se como tengo que hacerlo, he realizado pruebas pero no consigo imprimir una cadena sola.
Los codigos me funcionan sueltos... aunque creo que me falta algo para forma la palabra en el array...
Si alguien puede ayudar, mucha gracias por adelantado!
  #2 (permalink)  
Antiguo 16/11/2011, 05:55
 
Fecha de Ingreso: abril-2011
Ubicación: Alicante
Mensajes: 52
Antigüedad: 13 años
Puntos: 3
Respuesta: Nombre de variables automatico guardado en array para reutilizar función

Por favor, alguna ayuda, me expliqué bien? algo que aclarar?
  #3 (permalink)  
Antiguo 16/11/2011, 06:23
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Nombre de variables automatico guardado en array para reutilizar función

No entiendo que quieres hacer... pero las variables no les puedes poner nombre segun una cadena de caracteres. Deberias usar un indice o algo para eso.

Código C:
Ver original
  1. int datos[3];
  2. datos[0] = Validar();
  3. datos[1] = Validar();
  4. datos[2] = Validar();

algo parecido a lo que tratabas de hacer podria ser crear una funcion que apartir de una cadena te devuelva el indice donde esta:

Código C:
Ver original
  1. int buscar(char * c); // dejo a tu criterio la implementacion de esta funcion
  2. datos[buscar("altura")] = Validad();

Otra posibilidad podria ser crear una macro que haga de sinonimo:

#define ALTURA 0
Cada vez que escribas ALTURA en el codigo, antes de compilar re reemplaza por un cero(el indice de altura). Ej:

datos[ALTURA] = Validad();

Si no es esto lo que preguntabas, entonces si que no te entendi
  #4 (permalink)  
Antiguo 16/11/2011, 07:12
 
Fecha de Ingreso: abril-2011
Ubicación: Alicante
Mensajes: 52
Antigüedad: 13 años
Puntos: 3
Sonrisa Respuesta: Nombre de variables automatico guardado en array para reutilizar función

Pos si acaso no acabaste de entenderme mi objetivo es sustituir parametro por altura o base o espacios ...

Por ejemplo, el printf("\nIntroduce parametro:"); cada vez que me equivoque introduciendo un valor mostraste: printf("\Introduce %s",altura), con lo cual me diria el nombre de la variable altura si me equivoco en este parametro, o base si me equivoco en este... y que eso lo hiciero automatico. Ahora me entiendes mejor?
Código:
int Validar()
{
    int res=-1;
    int parametro;
     do{  
           printf("\nIntroduce parametro: ");//aqui quiero que en vez de parametro imprima el nombre de la variable guardado en el array
           res=scanf("%d",&parametro);  
                    if(parametro<=0 || res==0)
                    {
                            printf("\nERROR!!!!");
                            fflush(stdin);//limpio buffer
                    }                
     }while(parametro<=0 || res==0);//si parametro es positivo y scanf valido 
     return(parametro);//devuelvo parametro validado
}
Vamos creo que con el primer ejemplo y el segundo que me recomendaste podria solucionarlo...
Gracias...Un saludo!

Última edición por capixi; 16/11/2011 a las 07:22
  #5 (permalink)  
Antiguo 16/11/2011, 07:26
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Nombre de variables automatico guardado en array para reutilizar función

Código C:
Ver original
  1. int Validar(char * cadena)
  2. {
  3.     int res=-1;
  4.     int parametro;
  5.      do{  
  6.            printf("\nIntroduce %s: ",cadena);
  7.            res=scanf("%d",&parametro);  
  8.                     if(parametro<=0 || res==0)
  9.                     {
  10.                             printf("\nERROR!!!!");
  11.                             fflush(stdin);//limpio buffer
  12.                     }                
  13.      }while(parametro<=0 || res==0);//si parametro es positivo y scanf valido
  14.      return(parametro);//devuelvo parametro validado
  15. }
  16.  
  17. int main()
  18. {
  19.     int altura = Validar("altura");
  20.     int ancho = Validar("ancho");
  21.     return 0;
  22. }
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 16:17.