duda c++

Iniciado por peterfly, 30 Junio 2011, 23:23 PM

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

peterfly

teniendo el sigiente codigo:
#include <stdio.h>
#include <iostream>
main()
{
int a,b,c;

scanf(" %d",&a);

scanf(" %d",&b);

printf("0+0 \n");
printf("0+1 \n");
printf("0+2 \n");

printf("elija una opcion");
scanf(" %d",&c);

if(c==1) //envez de numero quiero una palabra
printf("resultat es: %d",0);

else if(c==2) //envez de numero quiero una palabra
printf("resultat es: %d",1);

else if(c==3) //envez de numero quiero una palabra
printf("resultat es: %d",2);

else
printf("no hi ha operacio");

system("PAUSE");
return EXIT_SUCCESS;
}


donde pone"alse if" como puedo canviar el numero por una palabra para que cuando me pregunte que opcion quiero responder en una palabra envez de un numero???

Saberuneko

#1
Utiliza un vector de caracteres (cadena): char[tamaño]
Para comparar la palabra necesitarás usar la opción stringcompare: strcmp(cadena1,cadena2)
(Para su uso necesitarás la librería string.h)

Básicamente, tus if serían:

if(strcmp(c,<palabra_deseada>)==0)
{
//hacer cosas
}

Ya que pones varias opciones, en vez de un else if, te aconsejo poner una estructura switch(c) en los casos que uses números, es fácil:

switch (variable)
{
case1:
//acciones a realizar si la variable vale '1'
break;
case2:
//acciones a realizar si la var vale '2'
break;
... etc ...
default:
//acciones a realizar si la var no cumple con ninguno de los valores anteriores
break
}

Un Saludo.

peterfly

ace poko que empece a trabajar con c++, por lo tanto no se muxo aunque voy avanzando...

no se donde poner todo eso que me as dicho... si no es mucha molestia... me podrias decir como quedaria??? (el codigo completo)

muxas gracias

Dark Invader

#3
Perdon por la interrupcion pero no pillo el codigo del programa¿que es lo que quieres hacer exactamente? :huh: Es que lo veo asi y no entiendo bien lo que quieres hacer,pero si es comparar cadenas ya te lo dijeron arriba,explicate un poco mejor y te digo donde van las sentencias.

Además tu programa es C pero utilizas la libreria de C++,luego para llamar al sistema tienes que utilizar la libreria cstdlib y para ahorrarte esta libreria y la llamada al sistema sustituye el system("pause") por getchar().

Salu2

peterfly

lo que quiero acer es... por ejemplo pongo por escrito "milmasmil" i me sale el resultado... pero no quiero un porgrama que haga los calculos automaticamente (eso ya lo tengo), lo que quiero es programar yo los calculos uno por uno.

por eso preguntaba lo de poner envez de numeros en las opciones, poner una palabra o varias palabras

i como no se mucho de programar en c++...

Dark Invader

Estoy dormido  :xD

Mira a ver si es esto lo que buscas,porque si es escribir una frase y transformarla en una ecuacion estamos listos:

#include <stdio.h>
#include <string.h>
int main (void){
    int a,b,c,i;
    char cadena1[40]="milmasmil";
    char cadena2[50];
    char cadena3[40];
    printf("escriba la operacion:  ");
    gets(cadena1);
    i= strcmp(cadena1,"milmasmil");
    if (i==0){
                                    printf("el resultado es 2000");
                                    }
                                    getchar();
                                    return 0;
                                    }
                                   

peterfly

me sirve solo para una operacion... pero io lo que quiero es que pueda dar opcion a otras operaciones tambien... tanto a milmasmil como a dosmilmasdosmil i asi asta el infinito i mas alla

por eso puse el codigo al principio por que en ese codigo (el que ice io) puedo elegir a mas operaciones... lo malo es que las operaciones que elijo estan en numeros... por ejemplo si elijo el numero 1 tengo el resultado de la operacion 1, si elijo el 2 para la operacion 2 i asi asta el final...

el codigo que me as sugerido tiene el problema que no puedo elegir entre varias opciones i no se como juntarlos por que los dos tienen una funcion diferente pero si se juntaran daria un resultado excelente...

pero aun asi... gracias por el codigo

Dark Invader

Ahhh que el codigo para las operaciones los tienes hechos...Solo quieres una opcion para saber que operacion hacer ¿no?.


#include <stdio.h>
int main()
{
int c;
char palabra [40];

printf("escriba la frase para la operacion");

gets(palabra);


printf("elija una opcion,1/2/3: ");
scanf("%d",&c);
switch(c){
case 1:
     //haz esta operacion.
     break;
     case 2:
          //haz esto;
          break;
          case 3:
               //haz lo otro;
               break;
               default:
                       printf("esa opcion no es valida");
                       break;
                       }
                       getchar();
return 0;
}


Mira a ver  :xD Esto haria una serie de opciones,si es 1 haz esto,si es 2 haz lo otro...

Salu2

peterfly

algo me falla...

ai donde as puesto tu "haz esta operacion" io e puesto el codigo
int main (void){
    int a,b,c,i;
    char cadena1[40]="milmasmil";
    char cadena2[50];
    char cadena3[40];
    printf("escriba la operacion:  ");
    gets(cadena1);
    i= strcmp(cadena1,"milmasmil");
    if (i==0){
                                    printf("el resultado es 2000");
                                    }
                                    getchar();
                                    return 0;
                                    }


pero al ejecutarlo no se que pasa que cuando pongo la operacion i luego enter se me cierra...

Queta

Si insertas este código tal y como lo escribiste, dentro del de Dark Invader, no puede ser que te no te dé errores. Te lo dijeron en otros posts: léete un buen libro.

http://foro.elhacker.net/programacion_cc/librospapers_cc-t296234.0.html
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.