Ir ao conteúdo
  • Cadastre-se

erro no código


Linehx

Posts recomendados

Boa tarde , to estudando C e pensei ''Vou fazer um programa que ao digitar por exemplo A, esse A vira Z'' . Porém na parte dentro do loop esta dando erro.

Se alguem puder me ajudar =).

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

main()

{

//Declaração de variáveis

char texto[120],textoconvertido[120];

int x=0,tam;

//Entrada de dados

do

{

printf("\n\n Digite um texto,sem acento: ");

gets(texto);

tam=strlen(texto);

if (tam>120) printf("\n ERRO!o texto deve conter menos de 120 caracteres.");

}

while(tam>120);

for (x<=tam;x++)

{

if (texto[x]=='a' || texto[x]=='A')

textoconvertido[x]='z';

if (texto[x]=='b' || texto [x]=='B')

textoconvertido[x]='a';

if (texto[x]=='c' || texto[x]=='C')

textoconvertido[x]='b';

if (texto[x]=='d' || texto [x]=='D')

textoconvertido[x]='c';

if (texto[x]=='e' || texto[x]=='E')

textoconvertido[x]='d';

if (texto[x]=='f' || texto [x]=='F')

textoconvertido[x]='e';

if (texto[x]=='g' || texto[x]=='G')

textoconvertido[x]='f';

if (texto[x]=='h' || texto [x]=='H')

textoconvertido[x]='g';

if (texto[x]=='i' || texto[x]=='I')

textoconvertido[x]='h';

if (texto[x]=='j' || texto [x]=='J')

textoconvertido[x]='i';

if (texto[x]=='k' || texto[x]=='K')

textoconvertido[x]='j';

if (texto[x]=='l' || texto [x]=='L')

textoconvertido[x]='k';

if (texto[x]=='m' || texto[x]=='M')

textoconvertido[x]='l';

if (texto[x]=='n' || texto [x]=='N')

textoconvertido[x]='m';

if (texto[x]=='o' || texto[x]=='O')

textoconvertido[x]='n';

if (texto[x]=='p' || texto [x]=='P')

textoconvertido[x]='o';

if (texto[x]=='q' || texto[x]=='Q')

textoconvertido[x]='p';

if (texto[x]=='r' || texto [x]=='R')

textoconvertido[x]='q';

if (texto[x]=='s' || texto[x]=='S')

textoconvertido[x]='r';

if (texto[x]=='t' || texto [x]=='T')

textoconvertido[x]='s';

if (texto[x]=='u' || texto[x]=='U')

textoconvertido[x]='t';

if (texto[x]=='v' || texto [x]=='V')

textoconvertido[x]='u';

if (texto[x]=='w' || texto[x]=='W')

textoconvertido[x]='v';

if (texto[x]=='x' || texto [x]=='X')

textoconvertido[x]='w';

if (texto[x]=='y' || texto[x]=='Y')

textoconvertido[x]='x';

if (texto[x]=='z' || texto [x]=='Z')

textoconvertido[x]='a';

}

prinft("Conversão para : %s",textoconvertido);

}

Link para o comentário
Compartilhar em outros sites

1 - Você esqueceu de declarar o valor inicial de x dentro do for.

2 - Você não declarou o tipo da main

3 - Você escreveu "prinft" ao invés de "printf".

4 - Você não limpou as matrizes iniciais de chars

Mas lógica está certo!

Veja aí:


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

void main()
{
//Declaração de variáveis
char texto[120]="";
char textoconvertido[120]="";
int x=0,tam;


//Entrada de dados
do
{
printf("\n\n Digite um texto,sem acento: ");
gets(texto);
tam=strlen(texto);
if (tam>120) printf("\n ERRO!o texto deve conter menos de 120 caracteres.");
}
while(tam>120);

for (x=0;x<=tam;x++)
{
if (texto[x]=='a' || texto[x]=='A')
textoconvertido[x]='z';

if (texto[x]=='b' || texto [x]=='B')
textoconvertido[x]='a';

if (texto[x]=='c' || texto[x]=='C')
textoconvertido[x]='b';

if (texto[x]=='d' || texto [x]=='D')
textoconvertido[x]='c';

if (texto[x]=='e' || texto[x]=='E')
textoconvertido[x]='d';

if (texto[x]=='f' || texto [x]=='F')
textoconvertido[x]='e';

if (texto[x]=='g' || texto[x]=='G')
textoconvertido[x]='f';

if (texto[x]=='h' || texto [x]=='H')
textoconvertido[x]='g';

if (texto[x]=='i' || texto[x]=='I')
textoconvertido[x]='h';

if (texto[x]=='j' || texto [x]=='J')
textoconvertido[x]='i';

if (texto[x]=='k' || texto[x]=='K')
textoconvertido[x]='j';

if (texto[x]=='l' || texto [x]=='L')
textoconvertido[x]='k';

if (texto[x]=='m' || texto[x]=='M')
textoconvertido[x]='l';

if (texto[x]=='n' || texto [x]=='N')
textoconvertido[x]='m';

if (texto[x]=='o' || texto[x]=='O')
textoconvertido[x]='n';

if (texto[x]=='p' || texto [x]=='P')
textoconvertido[x]='o';

if (texto[x]=='q' || texto[x]=='Q')
textoconvertido[x]='p';

if (texto[x]=='r' || texto [x]=='R')
textoconvertido[x]='q';

if (texto[x]=='s' || texto[x]=='S')
textoconvertido[x]='r';

if (texto[x]=='t' || texto [x]=='T')
textoconvertido[x]='s';

if (texto[x]=='u' || texto[x]=='U')
textoconvertido[x]='t';

if (texto[x]=='v' || texto [x]=='V')
textoconvertido[x]='u';

if (texto[x]=='w' || texto[x]=='W')
textoconvertido[x]='v';

if (texto[x]=='x' || texto [x]=='X')
textoconvertido[x]='w';

if (texto[x]=='y' || texto[x]=='Y')
textoconvertido[x]='x';

if (texto[x]=='z' || texto [x]=='Z')
textoconvertido[x]='a';
}

printf("Conversão para : %s",textoconvertido);
getchar();
}

Abraço!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Só uma dica...

Se você olhar a tabela ASCII, verá que o valor numérico de cada letra é consecutivo. Logo, se você diminuir um de 'B', ele vira 'A'. Então você pode fazer:


for (i=0; i<tam; i++)
{
if (texto[i] == 'A' || texto[i] == 'a')
textoconvertido[i] = texto[i] + 25; /* para chegar no z */
else
textoconvertido[i] = texto[i] - 1;
}

Se quiser, pode checar se é letra, antes de fazer a conversão:


for (i=0; i<tam; i++)
{
if (isalpha(texto[i])
{
if (texto[i] == 'A' || texto[i] == 'a')
textoconvertido[i] = texto[i] + 25;
else
textoconvertido[i] = texto[i] - 1;
}
}

Abraço!

Link para o comentário
Compartilhar em outros sites

Só uma dica...

Se você olhar a tabela ASCII, verá que o valor numérico de cada letra é consecutivo. Logo, se você diminuir um de 'B', ele vira 'A'. Então você pode fazer:


for (i=0; i<tam; i++)
{
if (texto[i] == 'A' || texto[i] == 'a')
textoconvertido[i] = texto[i] + 25; /* para chegar no z */
else
textoconvertido[i] = texto[i] - 1;
}

Se quiser, pode checar se é letra, antes de fazer a conversão:


for (i=0; i<tam; i++)
{
if (isalpha(texto[i])
{
if (texto[i] == 'A' || texto[i] == 'a')
textoconvertido[i] = texto[i] + 25;
else
textoconvertido[i] = texto[i] - 1;
}
}

Abraço!

fica melhor =), porém , eu queria entender porque da erro no main ¬¬''. Obg =)

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!