ayuda con lenguaje c por favor!

Iniciado por mariaorlando0922, 8 Febrero 2013, 01:14 AM

0 Miembros y 1 Visitante están viendo este tema.

mariaorlando0922

al ejecutar el programa no me cambia las letras de mayusculas a minusculas o al reves. necesito ayuda. que tengo mal hecho?
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <ctype.h>

void es_vocal(char *txt, int *v);
void transforma (char *txt, int v,int caso );


main()
{
      char texto[100], *txt, opc,t;
      int i=0, contt=0, cond=0,vocal;
     
     
      printf("Cargue un texto menor a 100 caracteres\n");
      printf("control fin de datos\n");
     
      while ((t=getchar())!=EOF)
      {
            texto[contt]=t;
            contt++;
      }
      texto[contt]='\0';
      txt=texto;
      clrscr();
      do
      {
               printf("\t\t menu de opciones\n");
               printf("1-> CONSONANTES DE MINUSCULAS A MAYUSCULAS\n");
               printf("2-> CONSONANTES DE MAYUSCULAS A MINUESCULAS\n");
               printf("3-> SALIR\n");
               opc=getch();
               
               switch(opc)
               {
                          case'1': while(i<contt)
                                   {
                                                       if(isalpha(*txt)>0)
                                                       {
                                                                         es_vocal(txt, &vocal);
                                                                         transforma(txt,vocal,1);
                                                       }
                                                       *txt++;
                                                       i++;
                                   }
                                   
                                                       // MUESTRA
                                                       for(i=0;i<contt;i++)
                                                        {
                                                                           putchar(texto);
                                                        }
                                                                   
                                  break;
                                  case'2':while(i<contt)
                                   {
                                                       if(isalpha(*txt)>0)
                                                       {
                                                                         es_vocal(txt, &vocal);
                                                                         transforma(txt,vocal,2);
                                                       }
                                                       *txt++;
                                                       i++;
                                   }
                                   
                                                       // MUESTRA
                                                       for(i=0;i<contt;i++)
                                                        {
                                                                           putchar(texto);
                                                        }
                                  break;
                                  case'3':cond=1;
                                  break;
                                  default:clrscr();
                                          printf("Opcion incorrecta\nIngrese opcion\n");
                                  break;
               }
      }while(cond!=1 && opc!=3);
system("PAUSE");   
return ;
}

void es_vocal(char *txt, int *v)
{
     switch(*txt)
     {
                case'a':
                case'e':
                case'i':
                case'o':
                case'u':
                case'A':
                case'E':
                case'I':
                case'O':
                case'U':
                *v=1;
                break;
                default: *v=0;
                break;
     }
     
}

                         
void transforma (char *txt, int v,int caso)
{
    switch(caso)
     {
                 case'1':    if((v)==0)
                             {
                                        if(isupper(*txt)<=0)
                                        {
                                          *txt=toupper(*txt);
                                        }
                                        else
                                        *txt=tolower(*txt);
                                       
                             }
                 
                 break;
                 case'2':  if((v)==0)
                             {
                                      if(isupper(*txt)>0)
                                        {
                                                          *txt=tolower(*txt);
                                        }
                                        else
                                        *txt=toupper(*txt);
                             }
                 break;
                 default:
                 break;
                 
     }
     return;
}

rir3760

Lo primero que debes hacer es evitar el uso de la biblioteca conio de borland y cambiar la definición de la función main. Mas información en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Para ser honesto no lo revise a fondo pero un error importante se encuentra en la función "transforma", ahí los casos se indican con caracteres:

case'1':    if((v)==0)
/* ... */
case'2':

Debes cambiarlo para que utilice enteros:

case 1:    if((v)==0)
/* ... */
case 2:

Empieza con eso, seguro alguien mas lo revisa con calma.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language