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

Dois exercícios


infomania

Pergunta

1) Faça um Programa em C que leia uma quantia inteira em R$ (dinheiro) e o

escreve decomposto na menor quantidade de notas de 100, 50, 20, 10, 5, 2 e 1. Por

exemplo, se a quantia for R$ 1.248, o programa deverá escrever:

12 notas de 100

0 notas de 50

2 notas de 20

1 nota de 5

1 nota de 2

1 nota de 1

Fiz apenas o seguinte:

#include <stdio.h>
#include <stdlib.h>
main()
{
float valor
printf("Digite o valor em reais:");
scanf("%f", valor);
ced_100=(valor/100);
resto=(valor % 50);
ced_50=resto;
ced_20=(ced_50/20);

Dai pra frente me perdi... alguém tem uma outra solução???

2) Um atleta olímpico recebeu 6 (seis) notas, uma de cada juiz. As notas do

intervalo [0-10] (verifique isso). A média final do atleta pode ser calculada de duas

formas:

- Média aritmética das notas, sendo que a maior e a menor nota não são consideradas

no cálculo.

- Média aritmética das notas, sendo que as duas menores notas não são consideradas.

Faça um Programa que leia as 6 (seis) notas do atleta, a opção de média e apresenta o

resultado ao usuário conforme a sua escolha.

Este apenas li as 6 notas...

SE ALGUÉM PUDER DAR UMA FORÇA NESTES 2 EXERCÍCIOS AGRADEÇO.

Editado por Durub
Arrumar título e adicionar tags
Link para o comentário
Compartilhar em outros sites

24 respostass a esta questão

Posts Recomendados

  • 0

No primeiro exercício, conforme você analisa uma cédula, você tem que tirar o valor.

Exemplo:

ced_100 = (int) (valor/100);
valor = valor%100;//Pega o restante que não foi possível pagar com notas de 100
ced_50 = (int)(valor/50);
valor = valor%50;//...

Acho que assim vai, ;)

Posta o código do 2...

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz o seguinte:

#include <stdio.h>
#include <stdlib.h>
main()
{
float N1,N2,N3,N4,N5,N6,MEDIA;
printf("Digite o da PRIMEIRA nota:");
scanf("%f",N1);
printf("Digite o da SEGUNDA nota:");
scanf("%f",N2);
printf("Digite o da TERCEIRA nota:");
scanf("%f",N3);
printf("Digite o da QUARTA nota:");
scanf("%f",N4);
printf("Digite o da QUINTA nota:");
scanf("%f",N5);
printf("Digite o da SEXTA nota:");
scanf("%f",N6);

Parei aqui...

Link para o comentário
Compartilhar em outros sites

  • 0

FIZ ISTO NO DEV C++ E ESTÁ DANDO ERRO... QUANDO INFORMO O VALOR O PROGRAMA RETORNA ERRO... O QUE PODE SER???

#include <stdio.h>
#include <stdlib.h>
main()
{
int valor,ced_100,ced_50,ced_20,ced_10,ced_5,ced_2,ced_1;
printf("Digite o valor em reais:");
scanf("%i", valor);
ced_100=(valor/100);
valor=valor%100;//Pega o restante que não foi possível pagar com notas de 100
ced_50=(valor/50);
valor=(valor%50);
ced_20=(valor/20);
valor=(valor%20);
ced_10=(valor/10);
valor=(valor%10);
ced_5=(valor/5);
valor=(valor%5);
ced_2=(valor/2);
valor=(valor%2);
ced_1=(valor/1);
valor=(valor%1);
printf("O valor decomposto é:"ced_100,ced_50,ced_20,ced_10,ced_5,ced_2,ced_1,);
system("pause");
}

Link para o comentário
Compartilhar em outros sites

  • 0
#include <stdio.h>
#include <stdlib.h>
main()
{
int valor,ced_100,ced_50,ced_20,ced_10,ced_5,ced_2,ced_1;
printf("Digite o valor em reais:");
scanf("%d",&valor);
ced_100=(valor/100);
valor=valor%100;//Pega o restante que não foi possível pagar com notas de 100
ced_50=(valor/50);
valor=(valor%50);
ced_20=(valor/20);
valor=(valor%20);
ced_10=(valor/10);
valor=(valor%10);
ced_5=(valor/5);
valor=(valor%5);
ced_2=(valor/2);
valor=(valor%2);
ced_1=(valor/1);
valor=(valor%1);
printf("O valor decomposto é:"ced_100,ced_50,ced_20,ced_10,ced_5,ced_2,ced_1,); //Está dando erro nessa linha
system("pause");
}

Link para o comentário
Compartilhar em outros sites

  • 0

Quando der um erro, posta o erro também, fica muito mais fácil para encontrar!

Outra coisa, quando chegar na nota de 1, não precisa fazer os cálculos! Afinal todo número dividido por 1 é o próprio número! E todo inteiro%1 é 0

No final das contas, a quantidade de cédulas de 1 real será a operação

valor=(valor%2);//Aqui você já tem a quantidade de cédulas de 1 Real
Embora do jeito que está atualmente vai funcionar numa boa! :) []'s EDITADO: Você precisa colocar os tipos das variáveis:
printf("O valor decomposto é: %d %d %d %d %d %d %d\n",ced_100,ced_50,ced_20,ced_10,ced_5,ced_2,ced_1);

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

  • 0

Perfeito p4t0X o exercício das cédulas foi concluído.... muito obrigado mesmo.

Te peço uma ajuda no outro que postei aqui mesmo sobre as 6 notas, vou colar o enunciado e o que já fiz para você dar uma analizada!!!

Um atleta olímpico recebeu 6 (seis) notas, uma de cada juiz. As notas do

intervalo [0-10] (verifique isso). A média final do atleta pode ser calculada de duas

formas:

- Média aritmética das notas, sendo que a maior e a menor nota não são consideradas

no cálculo.

- Média aritmética das notas, sendo que as duas menores notas não são consideradas.

Faça um Programa que leia as 6 (seis) notas do atleta, a opção de média e apresenta o

resultado ao usuário conforme a sua escolha.

#include <stdio.h>
#include <stdlib.h>
main()
{
float N1,N2,N3,N4,N5,N6,MEDIA;
printf("Digite o da PRIMEIRA nota:");
scanf("%f",N1);
printf("Digite o da SEGUNDA nota:");
scanf("%f",N2);
printf("Digite o da TERCEIRA nota:");
scanf("%f",N3);
printf("Digite o da QUARTA nota:");
scanf("%f",N4);
printf("Digite o da QUINTA nota:");
scanf("%f",N5);
printf("Digite o da SEXTA nota:");
scanf("%f",N6);

parei aqui...

Link para o comentário
Compartilhar em outros sites

  • 0

Então, você já aprendeu vetor?!

A cada checagem você precisa verificar se a nota foi válida, isto é, se ela pertence ao intervalo [1,10]. Você precisa garantir que a nota digitada está nesse intervalo, seria algo assim:

N1 = 0;
while( N1< 1 || N1 > 10 ){
    printf( "Digite a PRIMEIRA nota: ");
    scanf( "%f" , &N1 );
}
Fazendo isso para todas as notas. Agora, sugiro que você use vetor para resolver esse problema, vai ser MUITO² trabalhoso verificar as notas. Uma explicação simples de uso de um vetor:
//Cria uma variavel capaz de armazenar 6 floats
float notas[6];
int i;
/*
 * As variáveis são acessadas de acordo com o indice. Lembrando que o indice SEMPRE começa no 0.
 * +---+---+---+---+---+---+
 * | 0 | 1 | 2 | 3 | 4 | 5 |
 * +---+---+---+---+---+---+
 * Sendo cada número uma variável do tipo float.
 * 
 * Para ler uma entrada do teclado para uma variavel desse vetor, ficaria assim:
 * No caso, estou lendo para a primeira nota
 * scanf( "%f" , &notas[0] );
 * Para ler para a segunda, ficaria assim:
 * scanf( "%f" , &notas[1] );
 * E assim por diante..
 */
//Usando temos varias facilidades, por exemplo para ler as 6 notas:
for( i=0; i<6; i++ ){
    //Como o indice do vetor começa no ZERO, e a nota começa no 1, mostramos ao usuário o indice atual+1
    //Quando estiver na posição 0, que é a primeira nota, vai mostrar i para o usuário, porem vai guardar
    //na posição 0 do vetor
    printf( "Digite a %d nota: " , i+1 );
    scanf( "%d" , &notas[i] );
}

Vê se com isso você consegue fazer!

Qualquer coisa é só postar aí! :)

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

  • 0

Então se vai ter que fazer na mão mesmo, um exemplo:

maior = N1;
menor = N1;
total = 0;

total += N1;

if( N2 > maior ){
    maior = N2;
}else if( N2 < menor ){
    menor = N2;
}
total += N2;

if( N3 > maior ){
    maior = N3;
}else if( N3 < menor ){
    menor = N3;
}
total += N3;

............
Depois:
total = (total - maior - menor )/4;

Para fazer usando as 4 maiores notas, tente fazer algo similar...

Link para o comentário
Compartilhar em outros sites

  • 0

Segue código.... Ele lê as 6 notas e fecha o programa, não consegui achar o problema...

#include <stdio.h>
#include <stdlib.h>
main()
{
float N1,N2,N3,N4,N5,N6,media,maior,menor;
printf("Digite o valor da PRIMEIRA nota:\n");
scanf("%f",&N1);
printf("\nDigite o valor da SEGUNDA nota:\n");
scanf("%f",&N2);
printf("\nDigite o valor da TERCEIRA nota:\n");
scanf("%f",&N3);
printf("\nDigite o valor da QUARTA nota:\n");
scanf("%f",&N4);
printf("\nDigite o valor da QUINTA nota:\n");
scanf("%f",&N5);
printf("\nD&igite o valor da SEXTA nota:\n");
scanf("%f",N6);
maior = N1;
menor = N1;
media = 0;
media += N1;
if( N2 > maior ){
    maior = N2;
}else if( N2 < menor ){
    menor = N2;
}
media += N2;
if( N3 > maior ){
    maior = N3;
}else if( N3 < menor ){
    menor = N3;
}
media += N3;
if( N4 > maior ){
    maior = N4;
}else if( N4 < menor ){
    menor = N4;
}
media += N4;
if( N5 > maior ){
    maior = N5;
}else if( N5 < menor ){
    menor = N5;
}
media += N5;
if( N6 > maior ){
    maior = N6;
}else if( N6 < menor ){
    menor = N6;
}
media += N6;
media = (media - maior - menor )/4;
printf("A media do atleta é: %f\n\n",media);
system("pause");
}

Link para o comentário
Compartilhar em outros sites

  • 0

Era este o ero mesmo.... Mas como faço este programa para o usuario escolher a opção 1 para calcular a media (não inclir a maior e a menosr nota e para opção 2 calcular a media (nãi incluir as 2 menores notas) ?

#include <stdio.h>
#include <stdlib.h>
main()
{
float N1,N2,N3,N4,N5,N6,media,maior,menor;
printf("Digite o valor da PRIMEIRA nota:\n");
scanf("%f",&N1);
printf("\nDigite o valor da SEGUNDA nota:\n");
scanf("%f",&N2);
printf("\nDigite o valor da TERCEIRA nota:\n");
scanf("%f",&N3);
printf("\nDigite o valor da QUARTA nota:\n");
scanf("%f",&N4);
printf("\nDigite o valor da QUINTA nota:\n");
scanf("%f",&N5);
printf("\nD&igite o valor da SEXTA nota:\n");
scanf("%f",&N6);
maior = N1;
menor = N1;
media = 0;
media += N1;
if( N2 > maior ){
maior = N2;
}else if( N2 < menor ){
menor = N2;
}
media += N2;
if( N3 > maior ){
maior = N3;
}else if( N3 < menor ){
menor = N3;
}
media += N3;
if( N4 > maior ){
maior = N4;
}else if( N4 < menor ){
menor = N4;
}
media += N4;
if( N5 > maior ){
maior = N5;
}else if( N5 < menor ){
menor = N5;
}
media += N5;
if( N6 > maior ){
maior = N6;
}else if( N6 < menor ){
menor = N6;
}
media += N6;
media = (media - maior - menor )/4;
printf("A media do atleta é: %f\n\n",media);
system("pause");
}
Neste aqui o programa tem que ler 10 números inteiros e informar quantos são negativos, positivos e neutros..... Porém, eu coloquei todos números (1,1,1,1,1,1,1,1,1,1) mas no final ele informa 1 negativo e 9 positivo.... Porque?
#include <stdio.h>
#include <stdlib.h>
main () 
{
int Num[10],X = 0,NumNega = 0,NumPosi = 0,NumNeu = 0;
printf("Digite o PRIMEIRO numero:\n");
scanf("%d",&Num[X]);
printf("Digite o SEGUNDO numero:\n");
scanf("%d",&Num[X]);
printf("Digite o TERCEIRO numero:\n");
scanf("%d",&Num[X]);
printf("Digite o QUARTO numero:\n");
scanf("%d",&Num[X]);
printf("Digite o QUINTO numero:\n");
scanf("%d",&Num[X]);
printf("Digite o SEXTO numero:\n");
scanf("%d",&Num[X]);
printf("Digite o SETIMO numero:\n");
scanf("%d",&Num[X]);
printf("Digite o OITAVO numero:\n");
scanf("%d",&Num[X]);
printf("Digite o NONO numero:\n");
scanf("%d",&Num[X]);
printf("Digite o DECIMO numero:\n");
scanf("%d",&Num[X]);      
while (X < 10){
          if (Num[X] < 0) 
          NumNega++;
          else if  
          (Num[X] > 0) 
          NumPosi++;
          else if 
          (Num[X] == 0) 
          NumNeu++;
          X++;
          }
    printf("\nQuantidade de numeros Negativos: %d\n",NumNega);
    printf("\nQuantidade de numeros Positivos: %d\n",NumPosi);
    printf("\nQuantidade de numeros Neutros: %d\n\n",NumNeu);
    system ("pause");
}

Link para o comentário
Compartilhar em outros sites

  • 0

Por exemplo, você verifica se ele quer ver a média com ou sem a subtração das maiores/menores, e na hora de calcular você calcula.

Por exemplo, antes de ler as médias.

printf( "Informe o tipo de media a ser calculada;\n[1] -> Media aritmetica\n[2] -> Media aritmetica sem a maior e menor" );
scanf( "%d" , &opcao );//Declarar essa variável lá encima
Daí na hora de calcular a média você faz:
if( opcao == 1 ){
    media = media/6;//Aqui inclui TODAS as notas
}else if( opcao == 2 ){
    media = ( media - maior - menor )/4;//Aqui tira a maior e a menor
}
E assim por diante! :) Nesse segundo programa, você lê todos os números para a variavel Num[X], porem você não altera o X, então você fica substituindo a variavel Num[X], que no seu caso é Num[0], já que o X foi iniciado com 0. Duas soluções: Ou você coloca todos os indices na hora da leitura das variáveis;
printf("Digite o PRIMEIRO numero:\n");
scanf("%d",&Num[X]);//&Num[0]
printf("Digite o SEGUNDO numero:\n");
scanf("%d",&Num[X]);//&Num[1]
....
Ou você faz a leitura das variáveis em um laço de repetição
while( X < 10 ){
    printf( "Digite o %d numero: " , X );
    scanf( "%d" , &Num[X] );
    X++
}
//Lembre-se de antes de começar outro laço de repetição, alterar o valor de X para 0 novamente

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

  • 0

Neste código abaixo, eu usei as notas (7,6,5,4,3,2) e deu os seguintes resultados:

para opção 1 --> media = 4. 50 ***era para ser 3. 00*** pelo programa

Para opção 1 --> media = 4. 50 ***era para ser 5. 5*** pelo programa

#include <stdio.h>
#include <stdlib.h>
main()
{
float N1,N2,N3,N4,N5,N6,media,maior,menor;
int opcao;
printf("Digite o valor da PRIMEIRA nota:\n");
scanf("%f",&N1);
printf("\nDigite o valor da SEGUNDA nota:\n");
scanf("%f",&N2);
printf("\nDigite o valor da TERCEIRA nota:\n");
scanf("%f",&N3);
printf("\nDigite o valor da QUARTA nota:\n");
scanf("%f",&N4);
printf("\nDigite o valor da QUINTA nota:\n");
scanf("%f",&N5);
printf("\nDigite o valor da SEXTA nota:\n");
scanf("%f",&N6);
printf( "Informe o tipo de media a ser calculada:\n");
printf("[1] -> Media aritmetica sem a maior e menor nota\n");
printf("[2] -> Media aritmetica sem as duas menores notas\n");
scanf( "%d" , &opcao );
maior = N1;
menor = N1;
media = 0;
media += N1;
if( N2 > maior ){
    maior = N2;
}else if( N2 < menor ){
    menor = N2;
}
media += N2;
if( N3 > maior ){
    maior = N3;
}else if( N3 < menor ){
    menor = N3;
}
media += N3;
if( N4 > maior ){
    maior = N4;
}else if( N4 < menor ){
    menor = N4;
}
media += N4;
if( N5 > maior ){
    maior = N5;
}else if( N5 < menor ){
    menor = N5;
}
media += N5;
if( N6 > maior ){
    maior = N6;
}else if( N6 < menor ){
    menor = N6;
}
media += N6;
if( opcao == 1 ){
    media = (N1+N2+N3+N4+N5+N6)/6;
}else if( opcao == 2 ){
    media = ( media - maior - menor )/4;
}
printf("A media do atleta é: %.2f\n\n",media);
system("pause");
}

Agora sim... Maquele para ler 10 números inteiros e mostrar a quantidade de negativos, positivos e neutros está resolvido

Link para o comentário
Compartilhar em outros sites

  • 0

Oh, esse menu seu não está explicando o que ele realmente faz, o certo seria:

printf("[1] -> Media aritmetica\n");
printf("[2] -> Media aritmetica sem a maior e menor nota\n");

Para calcular sem as 2 menores notas você precisa descobrir as 2 menores, atualmente você só sabe a menor.

A lógica para descobrir a segunda menor é parecida...

A saída do programa está correta.

No primeiro caso ele faz a média aritmética das notas, isso é, soma todas e divide pelo número de notas.

7+6+5+4+3+2 = 27

Como temos 6 notas, a média será: 27/6 = 4.5

No segundo caso ele faz a média aritmética das notas, excluindo a maior e a menor.

6+5+4+3 = 18

Como temos 4 notas, a média será: 18/4 = 4.5

Para você fazer a média das 4 maiores notas, você precisa descobrir as duas menores notas, criar mais uma opção para a escolha desse tipo de media e na hora que for calcular a média, calcular da seguinte maneira:

media = ( media - menor - menor2 )/4;

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

  • 0

Na verdade o programa só apresenta 2 opções 1 --> mostra a média sem a maio e a menor nota e na opção 2 --> mostra a média sem as 2 menores notas.....

Eu to me quebrando para encontrar a segunda menor nota, no caso o 3 do exemplo anterior....

Este que está sendo o meu problema, achar a segunda menor nota.

Link para o comentário
Compartilhar em outros sites

  • 0

Neste quando o num1 ou o num2 for igual a zero... O programa tem que mostrar a soma entre os dois.. Mas dá erro.....

#include <stdio.h>
#include <stdlib.h>
main()
{
      int NUM1,NUM2,SOMA;
      printf("Digite um valor para NUM1:");
      scanf("%d",&NUM1);
      printf("Digite um valor para NUM2:");
      scanf("%d",&NUM2);      
      (while NUM1 || NUM2 != 0){ ERRO NESTA LINHA
      soma = (NUM1+NUM2);
      printf("A soma entre os numeros é: %d", SOMA);
      }
      system("pause");
}

Link para o comentário
Compartilhar em outros sites

  • 0

Tá dando errado por causa disso, coloque assim:

while ( NUM1 != 0 || NUM2 != 0 ){

Mais eu acho que tem alguma coisa errada com a lógica, se num1 ou num2 for 0, a soma vai ser o outro número O_o, e se num1 ou num2 não for 0, o programa vai ficar exibindo a soma para sempre...

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

  • 0

E neste você pode dar uma força... Tenho que postar este exercício hj mas to me quebrando no finalzinho!!!

Na verdade o programa só apresenta 2 opções 1 --> mostra a média sem a maio e a menor nota e na opção 2 --> mostra a média sem as 2 menores notas.....

Eu to me quebrando para encontrar a segunda menor nota, no caso o 3 do exemplo anterior....

Este que está sendo o meu problema, achar a segunda menor nota.

#include <stdio.h>
#include <stdlib.h>
main()
{
float N1,N2,N3,N4,N5,N6,media,maior,menor,menor2;
int opcao;
printf("Digite o valor da PRIMEIRA nota:\n");
scanf("%f",&N1);
printf("\nDigite o valor da SEGUNDA nota:\n");
scanf("%f",&N2);
printf("\nDigite o valor da TERCEIRA nota:\n");
scanf("%f",&N3);
printf("\nDigite o valor da QUARTA nota:\n");
scanf("%f",&N4);
printf("\nDigite o valor da QUINTA nota:\n");
scanf("%f",&N5);
printf("\nDigite o valor da SEXTA nota:\n");
scanf("%f",&N6);
printf("\nInforme o tipo de media a ser calculada:\n");
printf("\n[1] -> Media aritmetica sem a maior e menor nota\n");
printf("\n[2] -> Media aritmetica sem as duas menores notas\n");
scanf("%d",&opcao);
maior = N1;
menor = N1;
media = 0;
media += N1;
if( N2 > maior ){
    maior = N2;
}else if( N2 < menor ){
    menor = N2;
}
media += N2;
if( N3 > maior ){
    maior = N3;
}else if( N3 < menor ){
    menor = N3;
}
media += N3;
if( N4 > maior ){
    maior = N4;
}else if( N4 < menor ){
    menor = N4;
}
media += N4;
if( N5 > maior ){
    maior = N5;
}else if( N5 < menor ){
    menor = N5;
}
media += N5;
if( N6 > maior ){
    maior = N6;
}else if( N6 < menor ){
    menor = N6;
}
media += N6;
if( opcao == 1 ){
    media = ( media - maior - menor )/4;
}else if( opcao == 2 ){
    media = ( media - menor - menor2 )/4;
}
printf("A media do atleta é: %.2f\n\n",media);
system("pause");
}

Link para o comentário
Compartilhar em outros sites

  • 0

Sem o uso de vetor é meio chatinho mesmo! rsrs

Se você trocar as comparações

else if( N2 < menor ){
    menor = N2;
}
e colocar:
else if( N2 <= menor ){
    segundamenor = menor;
    menor = N2;

Você vai conseguir um semi-resultado. Só vai haver 1 problema, se a menor nota for a primeira, a segunda menor nota vai ser a menor também.

Vê se agora você consegue pensar em alguma coisa! ;~)

Editado por p4t0X
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,7k
×
×
  • Criar Novo...