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

Declarar variables en switch()

Estas en el tema de Declarar variables en switch() en el foro de C/C++ en Foros del Web. Estoy haciendo un programa el objetivo del cual es hacer una ordenacion ya sea de valores numericos enteros,decimales,caracteres o palabras con diferentes algoritmos y comparar ...
  #1 (permalink)  
Antiguo 24/05/2009, 11:14
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Pregunta Declarar variables en switch()

Estoy haciendo un programa el objetivo del cual es hacer una ordenacion ya sea de valores numericos enteros,decimales,caracteres o palabras con diferentes algoritmos y comparar cual es el más efectivo en ese caso.

El problema me ha surgido cuando pregunto al usuario que tipo de valor desea ordenar, en ese momento tengo que crear un array en función del tipo de valor que haya seleccionado el usuario, he hecho un switch que declare la variable en funcion de una variable, mejor pongo el código:

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

//Declaracion de prototipo
void entra_valor(char mensaje[],int* valor);
void pinta_encabezado();

int main(int argc, char *argv[]){
    char mensajes[3][100]={
         {"Introduzca el numero de elementos: "},
         {"Tipo de valores a ordenar:\n (1)Num Entero (2)Num Decimal (3)Caracter (4)Cadenas: "},
         {"En orden:\n (1)Mayor a menor (2)Menor a mayor : "},
    };
    int parametros[3]; //Numero elementos,Tipo de valores y Orden respectivamente
    int i,j;
    pinta_encabezado();
    for(i=0;i<3;i++){
                     entra_valor(mensajes[i],&parametros[i]);
    }
    
    switch(parametros[2]){
                          case 1:int valores[parametros[1]];break;
                          case 2:float valores[parametros[1]];break;
                          case 3:char valores[parametros[1]];break;
                          case 4:char valores[parametros[1]][];break;
    }
    
    system("PAUSE");	
    return 0;
}

//Valor que es llamada para recoger los parametros necesarios para la ordenacion
void entra_valor(char mensaje[],int* valor){
    printf("%s",mensaje);
    scanf("%d",&(*valor));
}

//Función que muestra el encabezado del programa
void pinta_encabezado(){
     printf("+----------------------------------------------------------------------------+\n");
     printf("|                     Programa comparativo de rendimiento                    |\n");
     printf("|                    de diferentes algoritmos de ordenacion.                 |\n");
     printf("+----------------------------------------------------------------------------+\n");
}
C no permite hacer este tipo de cosas, o hay algún error en mi código ?
Por favor ayudenme.
  #2 (permalink)  
Antiguo 24/05/2009, 14:51
Avatar de hades87  
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona - España
Mensajes: 3.194
Antigüedad: 16 años, 4 meses
Puntos: 68
Respuesta: Declarar variables en switch()

el array de que tipo es? no lo puedes crear como puntero y darle tamaño con malloc?
__________________
No diseñes usando tablas.
  #3 (permalink)  
Antiguo 24/05/2009, 17:34
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Declarar variables en switch()

Creo que no me he acabado de explicar del tdo bien

Lo que quiero hacer es que si el valor de parametros es 1, crear un array de enteros, si es 2 un array de floats, si es 3 un array de caracteres, y si es 4 un array de caracteres de 2 dimensiones

Espero que esta vez se entienda mejor
  #4 (permalink)  
Antiguo 25/05/2009, 01:30
Avatar de hades87  
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona - España
Mensajes: 3.194
Antigüedad: 16 años, 4 meses
Puntos: 68
Respuesta: Declarar variables en switch()

mmm entiendo, pero creo que las variables se han de definir al principio, con lo que tendrías que crear 4 variables
__________________
No diseñes usando tablas.
  #5 (permalink)  
Antiguo 25/05/2009, 02:56
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Declarar variables en switch()

Entonces tendria que crear 4 funciones diferentes que hagan lo mismo (llenar el array del tipo que sea) para cada tipo de array ? Al declarar 4 variables y usar solo 1 seria un desperdicio de memoria y tendria que escribir un codigo que hiciera lo mismo 4 veces...

No hay ninguna alternativa a ese problema ?
  #6 (permalink)  
Antiguo 25/05/2009, 03:02
Avatar de hades87  
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona - España
Mensajes: 3.194
Antigüedad: 16 años, 4 meses
Puntos: 68
Respuesta: Declarar variables en switch()

mmm, pues según mis conocimientos no, ya que apra rellenar el array necesitas saber el tipo de dato y eso lo has de hacer dependiendo de la variable
__________________
No diseñes usando tablas.
  #7 (permalink)  
Antiguo 25/05/2009, 11:37
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Declarar variables en switch()

Ok, entonces no me queda más remedio que hacer las 4 funciones por separado y declarar las 4 variables por separado.

Gracias por la ayuda
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 09:44.