Ir ao conteúdo

Posts recomendados

Postado
#include<stdio.h>
#include<stdlib.h>
int main(){
    int valor, h, m, s;
    char usu[1];
    printf("Digite um valor: ");
    scanf("%d", &valor);
    printf("O valor digitado corresponde a horas[h], minutos[m] ou segundos[s]?: ");
    scanf("%c", &usu);
    h = valor/3600;
    m = (valor%3600)/60;
    s = valor%60;
    if(strcmp(usu, 'h')== 0){
        printf("Você escolheu HORAS.");
        printf("O valor digitado corresponde a %d minutos e %d segundos.", m, s);
    }else{
        if(strcmp(usu, 'm')== 1){
            printf("Você escolheu MINUTOS.");
            printf("O valor digitado corresponde a %d horas e %d minutos.", h, s);
        }else{
            if(strcmp(usu, 's')== 2){
                printf("Você escolheu SEGUNDOS.");
                printf("O valor digitado corresponde a %d horas e %d minutos.", h, m);
            }else{
            }
        }
    }
    getchar();
}

Olá pessoal, tudo bem? Sou nova na programação em C e preciso desenvolver um programa que leia um numero digitado pelo usuário e o usuário deve informar se esse valor digitado é em horas, minutos ou segundos. Se for em horas deve ser mostrado na tela o valor correspondente em minutos e segundos, se for em minutos deve ser mostrado o valor em horas e segundos e se for em segundos, deve mostrar o valor em horas e minutos.

 Independente do valor digitado ele n entra na condicional. Alguém poderia me ajudar? 

desde já, muito obrigada!

 

 

Postado

Desculpe, mas não entendi seu calculo, por exemplo o usuário digitou 1 e h ou seja 1hr, então o programa vai para parte do calculo e vai calcular h="1"/3600 ou seja, h=0.00027777777.  Você não deveria calcular dentro do IF ? pois se o valor foi digitado em horas não teria porque fazer o calculo de horas. Não sei se você conseguiu entender ,meu raciocínio.

  • Curtir 1
Postado

ah sim, verdade... me perdoe pelo erro bobo. Mas mesmo assim, ele não entra na condição... devo importar alguma outra biblioteca? Ou retirar a função strcmp()? 

ja tentei assim também:  if(usu == "h") 

mas não funcionou.... 

adicionado 7 minutos depois

ah sim, verdade... me perdoe pelo erro bobo. Mas mesmo assim, ele não entra na condição... devo importar alguma outra biblioteca? Ou retirar a função strcmp()? 

ja tentei assim também:  if(usu == "h") 

mas não funcionou.... 

  • Curtir 1
Postado
1 hora atrás, cris4ds disse:

if(usu == "h") 

da pra fazer assim só que em vez de colocar "h" acho q o certo seria 'h' com aspas simples, testa dessa forma pra ver se vai pois desse jeito acho que você não precisará adicionar mais nenhuma biblioteca. Não saberia te informar se o strcmp precisa de biblioteca vou dar uma pesquisada

adicionado 17 minutos depois

utilizando o dev c fiz algumas alterações no seu codigo para rodar o if, primeiro na declaração da variavel "usu" você declarou char usu[1]; altere para char usu; sem os colchetes. 

4 horas atrás, cris4ds disse:

scanf("%c", &usu);

no meu dev funcionou com %s em vez de %c não sei se fará diferença para você.

4 horas atrás, cris4ds disse:

int valor, h, m, s;

você precisa iniciar as variáveis h=0 m=0 e s=0 para não dar erro no calculo.

 

e o calculo você coloca dentro do if dps do primeiro printf, como exemplo para o primeiro fiz assim:

 

m=valor*60;
s=m*60;

 

depois destas alterações deu certinho aqui pra mim teste ai.   obs troquei a função do if por (usu=='h')

  • Amei 1
Postado

muito obrigada mesmo pela ajuda, você me salvou KKKKK!

agora ele entra nas condições, só que infelizmente minha conta não funciona... na faculdade usamos o code blocks (não sei se há muita diferença, ou se existe alguma) e o resultado só da 0. Mudei tudo, assim como você disse, ja tentei ver se a conta está errada, mas creio eu que não... 

se puderes me ajudar só mais um pouquinho KKKKK 

Postado

@Vinicios_10

#include<stdio.h>
#include<stdlib.h>
int main(){
    int valor, h, m, s;
    char usu;
    printf("Digite um valor: ");
    scanf("%d", &valor);
    printf("O valor digitado corresponde a horas[h], minutos[m], segundos[s]: ");
    scanf("%s", &usu);
    h = 0;
    m = 0;
    s = 0;
    if(usu == 'h'){
        m = valor*60;
        s = valor*3600;
        printf("00:%dm:%ds", m, s);
    }else{
        if(usu == 'm'){
            h = valor*60;
            s = valor/60;
            printf("%dh :00: %ds", h, s);
        }else{
            if(usu == 's'){
                h = valor*3600;
                m = valor*60;
                printf("%dh:%dm:00", h, m);
            }else{
            }
        }
    }
    getchar();
}

 

Postado

@cris4ds Dei uma olhada aqui, pode ser algo muito besta que não estamos percebendo kkk,

 

18 minutos atrás, cris4ds disse:

int valor, h, m, s;

mas trocando a variável valor por float o calculo saiu certo aqui no meu dev, tenta ai no seu também ver se vai;

 

 

19 minutos atrás, cris4ds disse:

scanf("%d", &valor);

Só não esqueça de alterar para "%f"

  • Curtir 1
Postado

@Vinicios_10 MUITO OBRIGAADDAAA! 

você me salvou... fiz e deu bem certinho!

eu tinha mudado o código, usei o switch mas mesmo assim n dava certo... aí era esse pequeno detalhe do "%f", que apesar de pequeno, me deu uma dor de cabeça! hahhahaha

enfim, obrigada pela enooormmee ajuda! ❤️ 

  • Amei 1

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...