Autor
|
Tema: Ayuda para comparar una cadena con el nombre de una variable int (Leído 5,729 veces)
|
dato000
Desconectado
Mensajes: 3.034
|
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: #include <iostream> #include <stdio.h>
using namespace std;
int main(){ int opcion; void partFija(); void partDinamica(); //MENU DE BIENVENIDA printf("\t\t BIENVENIDO: "); printf("OPCIONES \n\n"); printf("\t 1. PARTICION FIJA \n"); printf("\t 2. PARTICION DINAMICA \n"); printf("\t 3. SALIDA \n\n"); printf("digite una de las opciones: "); scanf( "%i", &opcion); switch (opcion){ case 1: printf("PARTICION FIJA \n\n"); printf("NO HAY RELOCALIZACION \n\n"); partFija(); break; case 2: printf("PARTICION DINAMICA \n\n"); partDinamica(); break; case 3: break; } getchar(); return EXIT_SUCCESS; }
void partFija(){ int t[5]; int p[5]={20,15,20,10,30}; printf("HOLA!!\n\n"); //IMAGEN DE PARTICIONES printf("\n\n"); printf("PARTICION FIJA\n"); printf("------------------- 0\n"); printf("| SO | \n"); printf("------------------- 30\n"); for(int i=0; i<5; i++){ printf("| p%i | \n", i+1); printf("------------------- %i\n", p[i]); }
//INGRESO DE TAREAS printf("5 TAREAS MAXIMO \n\n"); for(int i=0; i<5; i++){ printf("TAREA %i: ", i+1); scanf( "%i", &t[i]); } //INGRESO DE TAREAS EN PARTICIONES printf("\n\n"); printf("PARTICION FIJA\n"); printf("------------------- 0\n"); printf("| SO | \n"); printf("------------------- 30\n"); 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("------------------- %i\n", p[i]); } else{ printf("| p%i | \n", i+1); printf("| *********** | \n"); printf("| Frag: %i | \n", p[i]-t[i]); printf("------------------- %i\n", p[i]); } } do{
********************************************PROBLEMA!!!!**************
printf("\n\nQUE TAREA DESEA ELIMINAR?? "); char t_borrar[2]; scanf( "%s", t_borrar); printf("------------------- 0\n"); printf("| SO | \n"); printf("------------------- 30\n"); 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("------------------- %i\n", p[i]); } else{ printf("| p%i | \n", i+1); printf("| *********** | \n"); printf("| Frag: %i | \n", p[i]-t[i]); printf("------------------- %i\n", p[i]); } } *****************************HASTA AQUI COMO LE HAGO???*******************
//El programa pregunta si quiere continuar char opc; fflush(stdin); printf("\n\n\nDESEA RETIRAR OTRA TAREA?? (S/N) "); scanf("%c", &opc); if(opc=='n' or opc=='N') break; printf("\n\n"); }while(true); getchar(); }
void partDinamica(){ printf("HOLA!! particion dinamica\n\n"); 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!!!!
|
|
« Última modificación: 6 Marzo 2011, 16:56 pm por dato000 »
|
En línea
|
|
|
|
diskontrol
Desconectado
Mensajes: 89
RAWR!
|
Buenas, if(t1= atoi(t_borrar)){ t1=0; }
si pones una asignación en la condición del if, se va a cumplir siempre. Además si t_borrar sólo la usas para compararla con enteros ¿por qué no la declaras cómo un entero? así te ahorras los atoi. Saludos!
|
|
|
En línea
|
Siempre ten tus cosas cuando las necesites con @Dropbox. ¡Una cuenta de 2 GB es gratis! http://db.tt/YxRhsCI
|
|
|
dato000
Desconectado
Mensajes: 3.034
|
Buenas, if(t1= atoi(t_borrar)){ t1=0; }
si pones una asignación en la condición del if, se va a cumplir siempre. Además si t_borrar sólo la usas para compararla con enteros ¿por qué no la declaras cómo un entero? así te ahorras los atoi. Saludos! Ah vale, siempre da true. 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 fflush(stdin); printf("\n\nQUE 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;
|
|
« Última modificación: 6 Marzo 2011, 18:37 pm por dato000 »
|
En línea
|
|
|
|
Pirata LOL
Desconectado
Mensajes: 31
|
int strcmp(const char *s1, const char *s2) -- Compara las dos cadenas de caracteres s1 y s2. pero si lo que quieres es descubrir si "el nombre de la variable entera" se encuentra en la cadena utiliza la funcion strncasecmp compara los primeros n caracteres de s1 (const char *s1, const char *s2, size_t n) ← algo asi, nose si eso te ayude o es lo que buscas
|
|
|
En línea
|
[center [/center]
|
|
|
dato000
Desconectado
Mensajes: 3.034
|
int strcmp(const char *s1, const char *s2) -- Compara las dos cadenas de caracteres s1 y s2. pero si lo que quieres es descubrir si "el nombre de la variable entera" se encuentra en la cadena utiliza la funcion strncasecmp compara los primeros n caracteres de s1 (const char *s1, const char *s2, size_t n) ← algo asi, nose si eso te ayude o es lo que buscas pues lo solucione de otra forma, pero te importaria explicar mejor ese tema?? es decir, parece que manejas bien esto, no puedes explicar un poco más todo esto, y de paso, explicarme unas cosas con el printf, scanf, gets y sobre las clases y muchas más dudas?? strncasecmp?? const char?? men, eso es avanzado para mi, cuentame más men!!!
|
|
|
En línea
|
|
|
|
Pirata LOL
Desconectado
Mensajes: 31
|
"const" proviene de ser constante es decir al declararselo a una variable no podra ser modificado a lo largo del programa "strncasecmp" es una de las tantas funciones que se usan con la libreria string.h y como dije antes compara los caracteres a diferencia del strcmp que compara el contenido de la cadena completa cadena s2 "nada" si la cadena s1 tiene "el_foro_es_mi_mejor_prof" con strncasecmp compara el ó foro ó es y asi... hasta encontrar similitud con strcmp compara s1 "el_foro_es_mi_mejor_prof" s2 "nada" luego de la comparacion devuelve un valor en el caso de la igualdad devuelve 0 investiga un poco usa google sale TODO ó descargate un libro digital de los que hay en el foro sin necesidad de buscar mucho http://foro.elhacker.net/programacion_cc/librospapers_cc-t296234.0.html AHORA a realizar codigos y poco a poco iras corrigiendo errores y aprendiendo mas
|
|
|
En línea
|
[center [/center]
|
|
|
dato000
Desconectado
Mensajes: 3.034
|
"const" proviene de ser constante es decir al declararselo a una variable no podra ser modificado a lo largo del programa "strncasecmp" es una de las tantas funciones que se usan con la libreria string.h y como dije antes compara los caracteres a diferencia del strcmp que compara el contenido de la cadena completa cadena s2 "nada" si la cadena s1 tiene "el_foro_es_mi_mejor_prof" con strncasecmp compara el ó foro ó es y asi... hasta encontrar similitud con strcmp compara s1 "el_foro_es_mi_mejor_prof" s2 "nada" luego de la comparacion devuelve un valor en el caso de la igualdad devuelve 0 investiga un poco usa google sale TODO ó descargate un libro digital de los que hay en el foro sin necesidad de buscar mucho http://foro.elhacker.net/programacion_cc/librospapers_cc-t296234.0.html AHORA a realizar codigos y poco a poco iras corrigiendo errores y aprendiendo mas por lo que entiendo, de todas maneras no me hubiera servido de mucho, pero como dije, me invente otra forma y ya supere lo del codigo, viejo, ahora tengo otra pregunta, sera mejor hacer otro post, pues es sobre otro tema, sobre como invocar otro metodo (partFija) como si fuera un archivo aparte, es decir, crear otro .cpp, y funcionara de la siguiente manera: 1) Solo main, invocando las funciones partFija y partDinamica 2) otro .cpp con la función partFija 3) otro. cpp con la función partDinamica La verdad es que no se hacerlo, bueno, se que puedo hacerlo como libreria, haciendo un <include ....partFija.h>, pero puedo llamarlo como si fuera .cpp??
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema con comparar cadena??
Programación Visual Basic
|
Hole_System
|
2
|
1,976
|
11 Julio 2008, 09:08 am
por Hole_System
|
|
|
ayuda para formatear una cadena
PHP
|
soru13
|
2
|
2,050
|
11 Noviembre 2012, 13:47 pm
por soru13
|
|
|
[AYUDA] VB.NET BUSCAR EN UN DIRECTORIO Y COMPARAR EL CHEKSUM MD5
.NET (C#, VB.NET, ASP)
|
DragonsWP
|
1
|
3,845
|
20 Julio 2013, 02:17 am
por Eleкtro
|
|
|
cómo comparar una variable string con una cadena en C
Programación C/C++
|
etcheverrypablol
|
6
|
5,532
|
6 Febrero 2016, 18:35 pm
por fary
|
|
|
Comparar variable de un comando con variable obtenida por read
Scripting
|
izi4me
|
1
|
3,286
|
31 Diciembre 2021, 18:31 pm
por izi4me
|
|