Ir ao conteúdo
  • Cadastre-se

Comando FOR (em C)


Posts recomendados

Boa noite, minha professora me passou alguns exercícios e a forma que ela quer q seja feita.

Tentei fazer mas na hora de executar algo dá errado e eu não encontro o erro.

Alguém poderia me ajudar?

Questao 4  - Para uma turma de 45 alunos, construa um programa que determine:
a- A idade média dos alunos com menos de 1,70m de altura;
b- A altura média dos alunos com mais de 20 anos.

resposta:

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

int main() {
    int id, i;
    float al,x=0, si=0, im, am, y=0, sa=0;
        for (i=1; i<=45; i++){
            printf ("Insira a idade do aluno.\n");
            scanf ("%d", &id);
            printf ("Insira a altura do aluno.\n");
            scanf ("%f", &al);
            if (id > 20) { y = (y+1); sa = (sa+al);}
            else if (al < 1.70) { x = (x+1); si = (si+id);}
    }
    am = (sa/y);
    im = (si/x);
    printf ("\t Idade media: %.2f \n\t Altura media: %.2f", im, am);
   return 0;
}

 

Questão 6 - Um hotel com 20 quartos cobra R$ 50,00 por diária e mais uma taxa de serviços. A taxa de serviços é de:
a- R$ 4,00 por diária, se o número de diárias for < 15;
b- R$ 3,60 por diária, se o número de diárias for = 15;
c- R$ 3,00 por diária, se o número de diárias for > 15.

 

Resposta.

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

int main () {
    char nome[10];
    int dias, i;
    float valor, total, ganho=0;
    for (i=1; i<=20; i++) {
        printf ("Insira o nome do cliente:\n");
        scanf ("%.10s", &nome);
        printf ("Insira o numero de dias que sera hospedado:\n");
        scanf ("%d", &dias);
            if (dias<15)
                {valor=4.00*dias;}
            else
            if (dias==15)
                {valor=3.60*dias;}
            else
                {valor=3.00*dias;}
        total=(50.00*dias)+valor;
        ganho=total+ganho;
            printf ("Hospede:%.10s \n Total da conta: R$%.2f \n", nome,total);
}
    printf("Total ganho pelo hotel: R$%.2f", ganho);

return 0;
}

 

Link para o comentário
Compartilhar em outros sites

@Ana Cecília Cavalcante E quais seriam os erros relatos pela IDE?

 

50 minutos atrás, Ana Cecília Cavalcante disse:

else if

Esse "Else" contradiz qual "If" do primeiro código?

 

51 minutos atrás, Ana Cecília Cavalcante disse:

si = (si+id)

Uma soma entre INT e FLOAT não funciona em C, a menos que dê um cast.

 

52 minutos atrás, Ana Cecília Cavalcante disse:

    am = (sa/y);
    im = (si/x);
    printf ("\t Idade media: %.2f \n\t Altura media: %.2f", im, am);

Economize memória, faça a operação simples diretamente na macro "printf();"

 

53 minutos atrás, Ana Cecília Cavalcante disse:

ganho=total+ganho;

Use: ganho+=total;

 

58 minutos atrás, Ana Cecília Cavalcante disse:

total=(50.00*dias)+valor;

Mesma confusão, igual ao item 2 acima.

Link para o comentário
Compartilhar em outros sites

O problema ali do segundo programa é que você colocou um . (ponto) quando formatou o tamanho do buffer para aceitar a entrada de 10 caracteres.

 

O correto seria:

 

char nome[11];   e  scanf ("%10s", nome);

 

Se você entrar com uma string maior que 10 buga o programa, para resolver isso voce pode usar esse comando apos o scanf ("%10s", nome); desta maneira mesmo que seja entrada um string maior que o limite ele simplesmente ignora o restante e mostra apenas 10 no caso.

 

while(1) { c = getchar(); if (c == ' ' || c == '\n' || c == EOF) break; }

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!