Ir ao conteúdo
  • Cadastre-se

Ajuda simples para programação em C


Christian Viero

Posts recomendados

Olá, tenho um trabalho para fazer, mas não consigo sair do lugar. O maior problema é com os comandos if, if else, etc...

 

Segue abaixo o codigo que eu ja fiz e o fluxograma que tenho que seguir para criar o codigo.

 

 

int main(){        int interruptor, lampada, soquete, s, n;        printf("\n aperte o interruptor, a lampada acendeu?  \n\n"  );        scanf("%d", &lampada);        if (s); {        printf ("\n\n a lampada esta ok \n\n");        scanf ("%d", &s);        }        if else (n) {        printf ("\n\n a lampada esta queimada? \n\n")        }return 0;}
 
 
 
 
Preciso fazer o codigo do fluxograma do exercicio numero 01.
 
Desde já agradeço.
Link para o comentário
Compartilhar em outros sites

Eu encontrei um erro predominante no seu código.

Com certeza não vai resolver o seu problema, mas já ajuda nessa parte que você colocou.

 

Quando você faz uma comparação usando if, a variável utilizada já deve possuir algum valor. Por exemplo, você faz:

  if (s); {        printf ("\n\n a lampada esta ok \n\n");        scanf ("%d", &s);  }

Repare que não há nenhuma referência anterior a esse if sobre o valor da variável s.

No início da execução de um programa, as variáveis vêm com lixo de memória. Para usá-las em comparações, você deve iniciá-las antes, fazendo, por exemplo:

s = 0;if(!s) { // ou n == 0    printf("A lampada estah ok.\n");}

Repare que não sei qual deve ser o valor de s para a sua aplicação. Isso você verá.

 

O mesmo acontece no próximo trecho de código, que deve ser algo do tipo:

n = 1;else if (n) { // ou n == 1    printf ("\n\n a lampada esta queimada? \n\n")}
Link para o comentário
Compartilhar em outros sites

Sua lógica está meio errada. Eu dei uma corrigida no seu código, analise-o e tente prosseguir com o resto do fluxograma.

int main(){    int interruptor, soquete, s, n;    char lampada;    printf("\n aperte o interruptor, a lampada acendeu?  \n\n"  );    scanf("%c", &lampada);     switch(lampada)    {    	case 's': printf ("\n\n a lampada esta ok \n\n");    	case 'S': printf ("\n\n a lampada esta ok \n\n");//'s' é diferente de 'S', logo devemos fazer as duas comparações    	case 'n': printf ("\n\n a lampada esta queimada? \n\n");    	case 'N': printf ("\n\n a lampada esta queimada? \n\n");    	default: printf ("\n\n opcao invalida! \n\n");        //no default você faz retornar ao início do programa, que pode ser feito usando goto ou até mesmo do while.    }    return 0;}

Você pode utilizar valores inteiros, como tentou fazer, mas como também pode utilizar chars, que foi o meu caso, e é o que o exercício pede.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

O problema é que nosso professora ainda nao ensinou usar case e switch então acredito que ele nao aceite, mas obrigado pela ajuda. Vou tentar mais algumas vezes.

 

Você pode adaptar o meu exemplo e utilizar com condicional if simples normalmente. Mas quanto ao professor não ter ensinado, geralmente professores assim gostam de alunos auto-didatas, então tenho quase certeza que ele aceitaria.

Link para o comentário
Compartilhar em outros sites

Christian,

 

O comando if-else funciona da seguinte forma:

if(condição){ //a condição tem que retornar um valor true ou false    bloco de código}else{    bloco de código}

Dentro dos blocos de códigos você pode ter outros if-else:

if(condição){    bloco de código}else{    if(condição2){        bloco de código    }}

No seu caso você vai precisar fazer 4 if's aninhados para verificar se a lâmpada, soquete e interruptor estão ligados(valor 1) ou desligados(valor 0).

 

 

Agora analisando o que você já fez:

int main(){        int interruptor, lampada, soquete, s, n; // Não precisa das variáveis s e n         printf("\n aperte o interruptor, a lampada acendeu?  \n\n"  );        scanf("%d", &lampada);     // Essa parte está certa, mas você precisa ler os                                   // valores de interruptor e soquete também                 if (s); {       // Aqui a condição tem que ser se a lampada está acesa, para você não esquecer que                        // detro dos ()  tem que ter uma condição é melhor fazer if(lampada==1)                  printf ("\n\n a lampada esta ok \n\n");        scanf ("%d", &s); // Não precisa disso aqui.        }         if else (n) {   //Aqui está errado. Tem que colocar o else e depois o outro if                        // lembrando que não precisa colocar condição no else porque a                        // condição é se o if for falso.        printf ("\n\n a lampada esta queimada? \n\n")        } return 0;}
Link para o comentário
Compartilhar em outros sites

Fazendo desta forma beleza, mas o professor vai avaliar da seguinte maneira. com este algoritmo 

1 Programa TesteLampada 2 Var Lampada, Interruptor, Soquete: Booleano 3 Início 4 Leia Lampada 5 Leia Interruptor 6 Leia Soquete 7 Escreva “Aperte o interruptor” 8 Se Lampada=1 9 Então 10 Escreva “Funcionamento normal” 11 Senão 12 Se Lampada=0 13 Então 14 Escreva “Troquei a lâmpada 15 Senão 16 Se Soquete = 0 17 Então 18 Escreva “Troque o soquete” 19 Senão 20 Se Interruptor = 0 21 Então  22 Escreva “Troque o interruptor” 23 Senão 24 Escreva “Verifique o disjuntor” 25 Fim 

Ele quer que o executavel faça as perguntas e que ele responda com sim ou nao, então como eu faço isso?

Link para o comentário
Compartilhar em outros sites

int main(void){    ...    char resposta;    /*Pergunte ao usuário*/    printf("Responda com S/N");    printf("A lâmpada está queimada? ");        /*leia do teclado a opção*/    resposta = getchar();        /*Teste em um if a condição*/    /*Se S ou s -> sim*/    if(resposta == 's' || resposta == 'S')        printf("Funcionamento normal.\n");    /*Se n ou N -> não*/    else if(resposta == 'n' || resposta == 'N')        printf("Troque a lâmpada.\n");    ...}

Você vai começar perguntando se a lâmpada está queimada e gravar em um caractere(char);

Depois teste a condição com ifs e elses...

Isso é válido para as demais perguntas.

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