Ir ao conteúdo
  • Cadastre-se

C Não consigo fazer o teste para comparar as strings.


erü
Ir à solução Resolvido por Flávio Pedroza,

Posts recomendados

O tempo que um determinado avião gasta para percorrer o trecho entre duas  localidades distintas está disponível através da seguinte tabela:

2063229698_OperaSnapshot_2022-06-03_120251_docs.google_com.png.1d07f59435f1fff52377e55f27ddf543.png

Faça um algoritmo que leia a tabela acima e informe ao usuário o tempo necessário para percorrer duas cidades por ele fornecidas, até o momento que ele fornecer duas cidades iguais (origem e destino).

Estou tentando resolver esse algoritmo, porém não consigo fazer o teste para comparar as strings.

Estou aprendendo ainda, qualquer dica é valida.

Agradeço desde já!!

 

MEU algoritmo:

 

#include <stdio.h>
#include <stdlib.h>
#define TAM 7
int main()
{
    int matriz[TAM][TAM], i, j, result;
    char cidade1[1], cidade2[2], a[1], b[1], c[1], d[1], e[1], f[1], g[1];
    a[1]= 'a';
    b[1]= 'b';
    c[1]= 'c';
    d[1]= 'd';
    e[1]= 'e';
    f[1]= 'f';
    g[1]= 'g';
    for (i = 0;  i < TAM;  i++){
        for (j = 0; j < TAM; j++){
            if(j == i){
                matriz[i][j]=0;
            }
            else {printf("Digite um valor para mat[%i][%i]: ", i, j);
            scanf("%i", &matriz[i][j]);
            }       
        }
    } 
    do{
        printf("Informe sua cidade de partida: ");
        scanf("%s", cidade1);
        result = strcmp(cidade1, a);
        if (result == 0){
            i = 0;
        }
        result = strcmp(cidade1, b);
         if(result == 0){
            i = 1;
        }
        result = strcmp(cidade1, c);
         if(result == 0){
            i = 2;
        }
        result = strcmp(cidade1, d);
         if(result == 0){
            i = 3;
        }
        result = strcmp(cidade1, e);
        if(result == 0){
            i = 4;
        }
        result = strcmp(cidade1, f);
        if(result == 0){
            i = 5;
        }
        result = strcmp(cidade1, g);
         if(result == 0){
            i = 6;
        }
        printf("Informe seu destino: ");
        scanf("%s", cidade2);
        result = strcmp(cidade1, a);
        if (result == 0){
            j = 0;
        }
        result = strcmp(cidade1, b);
         if(result == 0){
            j = 1;
        }
        result = strcmp(cidade1, c);
         if(result == 0){
            i = 2;
        }
        result = strcmp(cidade1, d);
        if(result == 0){
            j = 3;
        }
        result = strcmp(cidade1, e);
         if(result == 0){
            j = 4;
        }
        result = strcmp(cidade1, f);
         if(result == 0){
            j = 5;
        }
        result = strcmp(cidade1, g);
        if(result == 0){
            j = 6;
        }
        printf("Seu tempo de viagem sera %i horas\n", matriz[i][j]);
        
    }while (j != i);
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

Quando você declara um array em c, o indice vai de 0 até o tamanho-1.

Por exemplo: char a[4], o índice vai de a[0] até no máximo a[3].

Então, se você declara um array com um único elemento (que na verdade, não tem utlidade prática nenhum), o único elemento que você pode acessar é o 0.

#include <stdio.h>
#include <stdlib.h>
#define TAM 7
int main()
{
    int matriz[TAM][TAM], i, j, result;
    char cidade1, cidade2;
    for (i = 0;  i < TAM;  i++){
        for (j = 0; j < TAM; j++){
            if(j == i){
                matriz[i][j]=0;
            }
            else {printf("Digite um valor para mat[%i][%i]: ", i, j);
            scanf("%i", &matriz[i][j]);
            }       
        }
    } 
    do{
        printf("Informe sua cidade de partida: ");
        scanf(" %c", &cidade1);
        i = cidade1 - 'a';
        printf("Informe seu destino: ");
        scanf(" %c", &cidade2);
        j = cidade2-'a';
        
        printf("Seu tempo de viagem sera %i horas\n", matriz[i][j]);
        
    }while (j != i);
}

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

2 horas atrás, arfneto disse:

Leia de um arquivo. É muito mais fácil. Não tem sentido digitar 49 valores para cada teste.

 

Sua tabela é de 7 linhas por 7 colunas. Não tem isso no seu programa.

 

Você tem um livro? Qual livro? 

Não uso livro, são exercicios propostos por um professor. Obigado pelas dicas.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

57 minutos atrás, erü disse:

Não uso livro, são exercicios propostos por um professor

 

Recomendo muito ter um livro ou dois.

 

Quando escreve um programa nunca escreva um programa interativo. Só vai perder tempo. Use constantes, arquivos, geradores, qualquer coisa exceto a tela e o teclado.

 

  • Entenda que para seu programa não faz diferença a rota de cidades. Pode escrever o programa sem isso, usando constantes
  • Entenda que pode começar com o óbvio: eis a tabela de cidades
    int mapa[][7] =
    { 
        {  0,  2, 11,  6, 15, 11,  1 },
        {  2,  0,  7, 12,  4,  2, 15 },
        { 11,  7,  0, 11,  8,  3, 13 },
        {  6, 12, 11,  0, 10,  2, 11 },
        { 15,  4,  8, 10,  0,  5, 13 },
        { 11,  2,  3,  2,  5,  0, 14 },
        {  1, 15, 13,  1, 13, 14,  0 }
    }

 

leva minutos pra escrever isso. Escreva em torno dos dados e esses são os dados.

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Em 03/06/2022 às 12:11, erü disse:

até o momento que ele fornecer duas cidades iguais (origem e destino).

@erü    o algoritmo vai repetir até que seja digitado duas localidades iguais ,  e

 considerando que os valores nessa tabela sejam o tempo em horas entre as duas   localidades , e entao o tempo da localidade G até a localidade F ,  será 14 horas ,   e assim susecivamente  para outras localiddades   .

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!