Programación General > C/C++
Comparar una cadena con el nombre de una variable??
radioactivo:
Buenas, mi problema es el siguiente:
Estoy tratando de comparar una cadena (t_borrar) la cual representa el nombre de una tarea que debe borrarse dentro de una partición fija, y quiero que en el momento de que se capture la cadena, la tarea elegida para borrar (t1, t2, t3, t4, t5) sea borrada.
Pero no me ha salido:
esto es lo que tengo de momento:
Código:
--- Código: Text ---#include <iostream>#include <stdio.h> using namespace std; int main(){ int opcion; void partFija(); void partDinamica(); //MENU DE BIENVENIDA printf("tt BIENVENIDO: "); printf("OPCIONES nn"); printf("t 1. PARTICION FIJA n"); printf("t 2. PARTICION DINAMICA n"); printf("t 3. SALIDA nn"); printf("digite una de las opciones: "); scanf( "%i", &opcion); switch (opcion){ case 1: printf("PARTICION FIJA nn"); printf("NO HAY RELOCALIZACION nn"); partFija(); break; case 2: printf("PARTICION DINAMICA nn"); partDinamica(); break; case 3: break; } getchar(); return EXIT_SUCCESS; } void partFija(){ int t[5]; int p[5]={20,15,20,10,30}; printf("HOLA!!nn"); //IMAGEN DE PARTICIONES printf("nn"); printf("PARTICION FIJAn"); printf("------------------- 0n"); printf("| SO | n"); printf("------------------- 30n"); for(int i=0; i<5; i++){ printf("| p%i | n", i+1); printf("------------------- %in", p[i]); } //INGRESO DE TAREAS printf("5 TAREAS MAXIMO nn"); for(int i=0; i<5; i++){ printf("TAREA %i: ", i+1); scanf( "%i", &t[i]); } //INGRESO DE TAREAS EN PARTICIONES printf("nn"); printf("PARTICION FIJAn"); printf("------------------- 0n"); printf("| SO | n"); printf("------------------- 30n"); for(int i=0; i<5; i++){ if(t[i]==0){ printf("| p%i | n", i+1); printf("| *********** | n"); printf("| LIBRE: %i | n", p[i]); printf("------------------- %in", p[i]); } else{ printf("| p%i | n", i+1); printf("| *********** | n"); printf("| Frag: %i | n", p[i]-t[i]); printf("------------------- %in", p[i]); } } do{ ********************************************PROBLEMA!!!!************** printf("nnQUE TAREA DESEA ELIMINAR?? "); char t_borrar[2]; scanf( "%s", t_borrar); printf("------------------- 0n"); printf("| SO | n"); printf("------------------- 30n"); for(int i=0; i<5; i++){ if(t[i]==atoi(t_borrar)){ t[i]=0; } //IMAGEN DE PARTICIONES FIJAS CON TAREA RETIRADA if(t[i]==0){ printf("| p%i | n", i+1); printf("| *********** | n"); printf("| LIBRE: %i | n", p[i]); printf("------------------- %in", p[i]); } else{ printf("| p%i | n", i+1); printf("| *********** | n"); printf("| Frag: %i | n", p[i]-t[i]); printf("------------------- %in", p[i]); } } *****************************HASTA AQUI COMO LE HAGO???******************* //El programa pregunta si quiere continuar char opc; fflush(stdin); printf("nnnDESEA RETIRAR OTRA TAREA?? (S/N) "); scanf("%c", &opc); if(opc=='n' or opc=='N') break; printf("nn"); }while(true); getchar(); } void partDinamica(){ printf("HOLA!! particion dinamicann"); getchar(); }
gracias por cualquier ayuda, realmente necesito cualquier ayuda posible, ya me queme las pestañas, pero con el atoi se borran todas las tareas!!!!
Pero como le hago para la comparación??
Un ejemplo, necesito borrar (igualar a cero) una tarea, puede ser t2. y quiero que pregunte,
que tarea desea borrar??? t2
quiero que capture esa cadena "t2" con el nombre de la variable t2 (no su valor), y ahora si, igualar el valor de t2 = 0.
Como le hago??
no se como puedo ser más claro y aclarar la duda, ayudenme.
--------------------------
na, ya no importa, ya lo solucione con otro modo.
Bueno, nos vemos.
si quieren saber que hice, fue preguntar de otra forma
--- Código: Text ---fflush(stdin); printf("nnQUE TAREA DESEA ELIMINAR?? n (Digite solo el numero de la tarea) "); int borrar; scanf( "%i", &borrar); if(borrar == 1) t[0]=0; else if(borrar == 2) t[1]=0; else if(borrar == 3) t[2]=0; else if(borrar == 4) t[3]=0; else if(borrar == 5) t[4]=0;
m0skit0:
Efectivamente, tu planteamiento inicial era erróneo. En C/C++ no hay manera de hacer lo que dices, a menos que uses algo como vectores (arrays), aunque en otros lenguajes sí se puede (lenguajes que soportan la evaluación en tiempo de ejecución tales como Perl o LISP).
radioactivo:
--- Cita de: "m0skit0" ---Efectivamente, tu planteamiento inicial era erróneo. En C/C++ no hay manera de hacer lo que dices, a menos que uses algo como vectores (arrays), aunque en otros lenguajes sí se puede (lenguajes que soportan la evaluación en tiempo de ejecución tales como Perl o LISP).
--- Fin de la cita ---
ok gracias, buen dato. Perl?? Lisp??? son utiles?? son practicos?? para que se usan??
m0skit0:
Perl es sobre todo un lenguaje para hacer scripts, muy potente en cuanto a manipulación de cadenas, y con unas expresiones regulares realmente potentes. Personalmente me ha resultado muy útil para automatizar ciertas tareas repetitivas del curro.
LISP es un lenguaje funcional bastante antiguo (1958) y con una sintaxis peculiar, con muchas aplicaciones en el campo de la inteligencia artificial. Muy usado y venerado entre los hackers de la antigua escuela. Generalmente la gente o lo odia o lo ama (yo estoy entre los segundos).
radioactivo:
eres un sensei, por favor, cual es mejor para aprender...no momento, no dije bien, cual es más facil de aprender, y mejor aún, cuál podria servirme más como programador/desarrollador??
Navegación
[#] Página Siguiente
Ir a la versión completa