Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Cruz_25869

Problemas com o "break"

Recommended Posts

Bem, vou postar aqui o exercício que estou fazendo:

 

--------------------------------------------------------------------------------------

A entrada é uma sequência de caracteres alfanuméricos. Para cada caractere c lido:

 

· Se c for uma letra minúscula, imprima a mesma letra, porém maiúscula.

 

· Se c for uma letra maiúscula, imprima a mesma letra, porém minúscula.

 

· Se c não for uma letra, encerre o programa.

 

 

Exemplo:

 

Entrada: obiMUITOlegal!serio!

 

Saída: OBImuitoLEGAL

---------------------------------------------------------------------------------------

 

O problema tá no 3º item, quando não é letra. Quando rodo o exemplo, não fica igual, saem uns caracteres esquisitos a mais, mas a palavra "serio" não sai mesmo (como tem que ser). Parece que o "break" não está funcionando como deveria (claro que o erro é meu, mas ainda não percebi qual é). Vou postar aqui o que eu fiz:

 

http://pastebin.com/WWP09J8K

 

Já consegui resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, mesmo com as chaves o "break" pára o "for" sim. O "else" não é um loop, então o "break" não tem nada a ver com ele. O que eu tava fazendo de errado era não indicar o fim da string no "else", daí ele acabava imprimindo caracteres a mais do que eu queria.

 

Vou postar aqui a solução.

 

Mas obrigado pela ajuda, de qualquer forma.

 

#include <stdio.h>
#include <string.h>

int main (void)
{
       int tamS, tamT, i;
       char S[1000], T[1000];

       gets(S);


       tamS = strlen(S);

       for (i=0;i<tamS;i++)
       {
               if ((S[i]<='z')&&(S[i]>='a'))
               {
                       T[i] = S[i]+('Z'-'z');
               }
               else if ((S[i]<='Z')&&(S[i]>='A'))
               {
                       T[i] = S[i]-('Z'-'z');
               }
               else
               {
                       T[i] = '\0';
                       break;
               }
       }

       tamT = strlen(T);

       for (i=0;i<tamT;i++)
       {
               printf("%c", T[i]);
       }
       printf("\n");
       return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.