Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda, lição de casa...


Alexandre Pizzini

Pergunta

O professor passou assim...

" Criar um programa que receba uma palavra (char*) e mostre:

O nome do estado quando a palavra for uma sigla

ou

a sigla do estado quando a palavra for um nome do estado

Dica:

é necessario comparar a palavra com cada elemento do vetor

quando encontrar igualdade mostrar o valor do outro vetor na mesma posição. "

dai ele falou o jeito que começa...

char* sigla[10]={"SP","RJ","MG","PR","PA","SE","CE","AL","AC","BA"};

char* estado[10]={"são Paulo","Rio de Janeiro","Minas Gerais","Parana","Para","Sergipe","Ceara","Alagoas","Acre","Bahia"};

por favor, quem conseguir fazer, me explicar o que fez...

Muito Obrigado, desde já!

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

no meu programa eu coloque isso, mas deu erro no programa já compilado, depois de digitar a sigla...

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
char* sigla[10]={"SP","RJ","MG","PR","PA","SE","CE","AL","AC"," BA "};
char* estado[10]={"são Paulo","Rio de Janeiro","Minas Gerais","Parana","Para","Sergipe","Ceara","Alagoas ","Acre","Bahia"};
char* txt;
int cont;

printf("Digite uma sigla ou estado: ");
scanf("%s",&txt);

if (strcmp(txt,sigla[10])==0) //são iguais
printf("%s corresponde a %s",txt,estado[10]);

system("PAUSE");
return EXIT_SUCCESS;
}

A

Link para o comentário
Compartilhar em outros sites

  • 0

Eu mudei, mas agora quando o programa roda ele não da a mensagem, ele já da o system pause...

#include <cstdlib>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    char* sigla[10]={"SP","RJ","MG","PR","PA","SE","CE","AL","AC","BA "};
    char* estado[10]={"são Paulo","Rio de Janeiro","Minas Gerais","Parana","Para","Sergipe","Ceara","Alagoas ","Acre","Bahia"};
    char* txt[20];
    int cont;
    
    printf("Digite uma sigla ou estado: ");
    scanf("%s",&txt);
    
    if (strcmp(txt[20],sigla[10])==0) //são iguais
     printf("%s corresponde a %s",txt,estado[10]);

    system("PAUSE");
    return EXIT_SUCCESS;
}

Link para o comentário
Compartilhar em outros sites

  • 0

troquei, mas mesmo assim ele continua sem mostrar o texto no printf...

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    char* sigla[10]={"SP","RJ","MG","PR","PA","SE","CE","AL","AC","BA "};
    char* estado[10]={"são Paulo","Rio de Janeiro","Minas Gerais","Parana","Para","Sergipe","Ceara","Alagoas ","Acre","Bahia"};
    char txt[20];
    int cont;
    
    printf("Digite uma sigla ou estado: ");
    scanf("%s",&txt);
    
    if (strcmp(txt,sigla[10])==0) //são iguais
     printf("%s corresponde a %s",txt,estado[10]);

    system("PAUSE");
    return EXIT_SUCCESS;
}

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Alexandre

O erro está na lógica do seu programa. Veja que, após pedir a sigla ou nome, ele executa este comando:

if (strcmp(txt,sigla[10])==0) //são iguais
     printf("%s corresponde a %s",txt,estado[10]);

Ou seja, ele compara a entrada com o valor de sigla[10], que, no caso, é "BA". Experimente rodar o programa da forma como está digitando "BA" como entrada.

Como sugestão, adicione um laço for envolvendo o if, para percorrer todo o vetor de siglas. Lembre de verificar também o vetor de nomes.

Abraço!

Editado por RSalvador
Link para o comentário
Compartilhar em outros sites

  • 0

Eu dei uma arrumada, ele da certo, mas depois que ele da o resultado, logo em seguida ele da erro. Ele fala que o programa precisa ser fechado. Por favor me ajudem...

Se alguém conseguir fazer o programa de outra forma, por favor poste para mim.

Ai esta o programa:

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
char* sigla[10]={"SP","RJ","MG","PR","PA","SE","CE","AL","AC","BA "};
char* estado[10]={"são Paulo","Rio de Janeiro","Minas Gerais","Parana","Para","Sergipe","Ceara","Alagoas ","Acre","Bahia"};
char txt[14];
int cont;

printf("Digite uma sigla ou estado: ");
gets(txt);

for(cont=0;cont<=10;cont++)
{
if (strcmp(txt,sigla[cont])==0) //são iguais
printf("%s corresponde a %s",txt,estado[cont]);
else if (strcmp(txt,estado[cont])==0)
printf("%s corresponde a %s",txt,sigla[cont]); 
}

system("PAUSE");
return EXIT_SUCCESS;
}

A...

E quando eu digito algum estado com mais de duas palavras, tipo são paulo, rio de janeiro, minas gerais, ele da erro e nem mostra o resultado...

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui arrumar... só que tem mais um problema...eu fiz uma repetição no programa para se a pessoa queira fazer denovo...só que quando você digita 's', o programa volta no começo, porem com o cursor na pergunta de novo...

alguém pode me ajudar?

olha como ficou:

#include <iostream>
#include <conio.c>

using namespace std;

int main(int argc, char *argv[])
{
char* sigla[10]={"SP","RJ","MG","PR","PA","SE","CE","AL","AC","BA "};
char* estado[10]={"são PAULO","RIO DE JANEIRO","MINAS GERAIS","PARANA","PARA","SERGIPE","CEARA","ALAGOAS ","ACRE","BAHIA"};
char txt[14],p;
int cont;

do
{ 
system("cls");
gotoxy(20,1);printf(" ***Sigla / Estado*** "); 
gotoxy(15,3);printf("Digite uma sigla ou estado (EM MAIUSCULA) : ");
gets(txt);

for(cont=0;cont<10;cont++)
{

if (strcmp(txt,sigla[cont])==0) //são iguais
{
gotoxy(15,4);printf("%s corresponde a %s",txt,estado[cont]);
}

else if (strcmp(txt,estado[cont])==0)
{
gotoxy(15,4);printf("%s corresponde a %s",txt,sigla[cont]); 
}

}


do
{
gotoxy(15,6);printf("Deseja continuar? (s/n): ");
scanf("%c",&p);
}while(p!='s' && p!='n'); 
}while(p=='s');

return EXIT_SUCCESS;
}

Link para o comentário
Compartilhar em outros sites

  • 0

Já conseguir resolver isso, usei o flush(stdin) antes de pegar a varivale txt...

Mas, eu só queria saber uma coisa...tem como quando receber a variavel txt, o programa leia o que o usuario digitou e passar para o programa em letra maiuscula?

Porque assim, eu declarei a variavel sigla com as siglas em maiusculas, só que se o usuario digita em minuscula, ele não vai dar certo.

Obrigado desde já.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...