Olá, estou com um problema no valor float de uma variável (peso).
Quando o valor não é acrescido de decimais na entrada do dado (por exemplo, peso = 1 ou 2 ou 3...) o resultado é correto. Entretanto, quando o valor do peso vem com decimais (por exemplo, peso = 1.3 ou 2.3 ou 4.45...) o programa simplesmente ignora todos os demais comandos e roda o programa de maneira errada. Já quebrei a cabeça mas não encontrei solução. Quem puder me ajudar, agradeço demais.
PS- sou noob então relevem se for algo prosaico rs
Abaixo segue o código:
/* programa para ler o peso de uma encomenda, tipo
de entrega(1-sedex, 2-sedex 10) e região onde será entregue a
encomenda(1- Norte, 2-Nordeste, 3-Centro-Oeste, 4-Sudeste,
5-Sul), calcular o valor de postagem com base nas condições
referentes ao peso, região de entrega e tipo de entrega dispostos
na apostila e imprimir o valor total da postagem */
//Inclusão de bibliotecas
#include <stdio.h>
#include <locale.h>
int main(void) {
//Comando que faz escrever com acentuação
setlocale(LC_ALL,"Portuguese");
//Declaração das variáveis
float peso, postagem;
int tipo, regiao;
//Título esubtítulo do programa
printf("\tLOJAS PYONGYANG\n\n\n\n");
printf("\tCálculo do valor da postagem\n\n\n");
//Leitura dos seguintes dados de entrada: peso, tipo de entrega e região de entrega
printf("Digite aqui o peso da encomenda, em kg: ");
scanf("%f", &peso);
printf("\nQual o tipo de entrega?\n(1- Sedex, 2- Sedex 10)\n");
scanf("%d", &tipo);
printf("\nQual a região da entrega?\n(1- Norte, 2- Nordeste, 3- Centro-Oeste, 4- Sudeste, 5- Sul)\n");
scanf("%d", ®iao);
postagem = 0;
//Switch para os casos referentes à região, com if-else referentes à peso e tipo de entrega
switch(regiao)
{
case 1: postagem = postagem+3;
if (tipo == 1)
{
postagem = postagem+9;
}else
{
if(tipo == 2)
postagem = postagem+11;
Pergunta
Lyudmila Pavlichenko
Olá, estou com um problema no valor float de uma variável (peso).
Quando o valor não é acrescido de decimais na entrada do dado (por exemplo, peso = 1 ou 2 ou 3...) o resultado é correto. Entretanto, quando o valor do peso vem com decimais (por exemplo, peso = 1.3 ou 2.3 ou 4.45...) o programa simplesmente ignora todos os demais comandos e roda o programa de maneira errada. Já quebrei a cabeça mas não encontrei solução. Quem puder me ajudar, agradeço demais.
PS- sou noob então relevem se for algo prosaico rs
Abaixo segue o código:
/* programa para ler o peso de uma encomenda, tipo
de entrega(1-sedex, 2-sedex 10) e região onde será entregue a
encomenda(1- Norte, 2-Nordeste, 3-Centro-Oeste, 4-Sudeste,
5-Sul), calcular o valor de postagem com base nas condições
referentes ao peso, região de entrega e tipo de entrega dispostos
na apostila e imprimir o valor total da postagem */
//Inclusão de bibliotecas
#include <stdio.h>
#include <locale.h>
int main(void) {
Editado por Lyudmila Pavlichenko//Comando que faz escrever com acentuação
setlocale(LC_ALL,"Portuguese");
//Declaração das variáveis
float peso, postagem;
int tipo, regiao;
//Título esubtítulo do programa
printf("\tLOJAS PYONGYANG\n\n\n\n");
printf("\tCálculo do valor da postagem\n\n\n");
//Leitura dos seguintes dados de entrada: peso, tipo de entrega e região de entrega
printf("Digite aqui o peso da encomenda, em kg: ");
scanf("%f", &peso);
printf("\nQual o tipo de entrega?\n(1- Sedex, 2- Sedex 10)\n");
scanf("%d", &tipo);
printf("\nQual a região da entrega?\n(1- Norte, 2- Nordeste, 3- Centro-Oeste, 4- Sudeste, 5- Sul)\n");
scanf("%d", ®iao);
postagem = 0;
//Switch para os casos referentes à região, com if-else referentes à peso e tipo de entrega
switch(regiao)
{
case 1: postagem = postagem+3;
if (tipo == 1)
{
postagem = postagem+9;
}else
{
if(tipo == 2)
postagem = postagem+11;
}
if (peso <= 1.00)
postagem = postagem+5;
else
{
if(peso >= 1.00 || peso <= 5.00)
postagem = postagem+10;
else
{
if(peso > 5.00)
postagem = ((peso-5.00)*3)+15+postagem;
}
}
break;
case 2: postagem = postagem+2;
if (tipo == 1)
{
postagem = postagem+9;
}else
{
if(tipo == 2)
postagem = postagem+11;
}
if (peso <= 1.00)
postagem = postagem+5;
else
{
if(peso >= 1.00 && peso <= 5.00)
postagem = postagem+10;
else
{
if(peso > 5.00)
postagem = ((peso-5.00)*3)+15+postagem;
}
}
break;
case 3: postagem = postagem+6;
if (tipo == 1)
{
postagem = postagem+9;
}else
{
if(tipo == 2)
postagem = postagem+11;
}
if (peso <= 1.00)
postagem = postagem+5;
else
{
if(peso >= 1.00 && peso <= 5.00)
postagem = postagem+10;
else
{
if(peso > 5.00)
postagem = ((peso-5.00)*3)+15+postagem;
}
}
break;
case 4: postagem = postagem+5;
if (tipo == 1)
{
postagem = postagem+9;
}else
{
if(tipo == 2)
postagem = postagem+11;
}
if (peso <= 1.00)
postagem = postagem+5;
else
{
if(peso >= 1.00 && peso <= 5.00)
postagem = postagem+10;
else
{
if(peso > 5.00)
postagem = ((peso-5.00)*3)+15+postagem;
}
}
break;
case 5: postagem = postagem+7;
if (tipo == 1)
{
postagem = postagem+9;
}else
{
if(tipo == 2)
postagem = postagem+11;
}
if (peso <= 1.00)
postagem = postagem+5;
else
{
if(peso >= 1.00 && peso <= 5.00)
postagem = postagem+10;
else
{
if(peso > 5.00)
postagem = ((peso-5.00)*3)+15+postagem;
}
}
break;
}
//Impressão dos resultados
printf("\n\n\nVALOR TOTAL DA POSTAGEM...................R$ %.2f\n\n", postagem);
system("pause");
}
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.