Logo Hardware.com.br
Myke Leony
Myke Leony Novo Membro Registrado
2 Mensagens 1 Curtida

Programa falha na execução, o que fazer

#1 Por Myke Leony 19/07/2017 - 17:51
Ultimamente tenho percebido que alguns programas que eu crio em C, trava na execução. O código compila normalmente, não aparece nenhum erro de sintaxe mas na hora de executar o programa já compilado aparece aquele erro chato do Windows "O programa tal.exe parou de funcionar, procurando solução e blá blá blá"

Vou deixar aqui o código fonte de um destes programas simples que eu criei e queria que vocês me explicassem qual é causa deste problema.

Observações:

Utilizo o Dev-C++
Utilizo o Windows 7 64bits

O código-fonte de um programa que não executa abaixo:


/*Crie um programa que permita a entrada de dois números, onde o primeiro receberá um acréscimo de 40% e o segundo um desconto de 10%. Apresente os resultados no final. */

#include <stdio.h>
#include <locale.h>
#include <conio.h>

int main() {

float num1, num2, conta1, conta2, desc;
int cont;

setlocale(LC_ALL, "Portuguese&quot;

cont=1;

while (cont==1) {

system("cls&quot;

printf("Digite o primeiro número: &quot;
scanf("%f", num1);

printf("Digite o segundo número: &quot;
scanf("%f", num2);

conta1 = num1*0.4;
conta2 = num2*0.1;
desc = num2 - conta2;

printf("Este é o resultado do primeiro número: %f4.2", conta1);
printf("Este é o resultado do segunda número: %f4.2", desc);

printf("\n\n Deseja continuar? 1- SIM 2= NÃO --> &quot;
scanf("%d", cont);

}

return 0;

}


O que vocês acham? Tem algum erro que passou despercepido?
Agradeço quem puder me ajudar.
Francisco Ossian
Francisco Os... Super Participante Registrado
221 Mensagens 68 Curtidas
#2 Por Francisco Os...
19/07/2017 - 19:38
na função scanf(); a variável é declarada com "&" antes.


scanf("%i", &numero);


cont1 e cont2 não são necessárias (posso estar enganado, então confirme).


num1 = num1*1.4; // se quer adicionar, tem q multiplicar por um numero maior q 1.
num2 = num2-(num2*0.1);

printf("Este é o resultado do primeiro número: %.2f \n", num1); // .2 para duas casas
printf("Este é o resultado do segundo número: %2.f \n", num2); // .2 para duas casas

printf("\n\n Deseja continuar? 1 - SIM 2 - NAO --> &quot;
scanf("%d", &cont);

Myke Leony
Myke Leony Novo Membro Registrado
2 Mensagens 1 Curtida
#3 Por Myke Leony
20/07/2017 - 16:17
Francisco Ossian disse:
na função scanf(); a variável é declarada com "&" antes.


scanf("%i", &numero);


cont1 e cont2 não são necessárias (posso estar enganado, então confirme).


num1 = num1*1.4; // se quer adicionar, tem q multiplicar por um numero maior q 1.
num2 = num2-(num2*0.1);

printf("Este é o resultado do primeiro número: %.2f \n", num1); // .2 para duas casas
printf("Este é o resultado do segundo número: %2.f \n", num2); // .2 para duas casas

printf("\n\n Deseja continuar? 1 - SIM 2 - NAO --> &quot;
scanf("%d", &cont);


Francisco Ossian disse:
na função scanf(); a variável é declarada com "&" antes.


scanf("%i", &numero);


cont1 e cont2 não são necessárias (posso estar enganado, então confirme).


num1 = num1*1.4; // se quer adicionar, tem q multiplicar por um numero maior q 1.
num2 = num2-(num2*0.1);

printf("Este é o resultado do primeiro número: %.2f \n", num1); // .2 para duas casas
printf("Este é o resultado do segundo número: %2.f \n", num2); // .2 para duas casas

printf("\n\n Deseja continuar? 1 - SIM 2 - NAO --> &quot;
scanf("%d", &cont);



Agora está funcionando, e suas dicas foram muito úteis, estou usando bem menos variáveis que antes, muito obrigado!

Francisco Ossian disse:
na função scanf(); a variável é declarada com "&" antes.


scanf("%i", &numero);


cont1 e cont2 não são necessárias (posso estar enganado, então confirme).


num1 = num1*1.4; // se quer adicionar, tem q multiplicar por um numero maior q 1.
num2 = num2-(num2*0.1);

printf("Este é o resultado do primeiro número: %.2f \n", num1); // .2 para duas casas
printf("Este é o resultado do segundo número: %2.f \n", num2); // .2 para duas casas

printf("\n\n Deseja continuar? 1 - SIM 2 - NAO --> &quot;
scanf("%d", &cont);



Só mais uma coisa... Por que a cont1 e 2 não são necessárias? O objetivo do programa é receber dois números inteiros, reconhecer o primeiro e adicionar 40% do mesmo, e no segundo um desconto de 10%. Existe um modo de fazer isso sem usar variáveis? Agradeço desde já.
Francisco Ossian
Francisco Os... Super Participante Registrado
221 Mensagens 68 Curtidas
#4 Por Francisco Os...
21/07/2017 - 10:09
Estava declarando uma variável para receber o que leu do teclado, e depois declarando outra variável que no código disse que era, exemplo:

VariávelQueRecebeuDoTeclado*1,4;

Mas como o "=", é um valor de atribuição e não igualdade posso fazer,

num1 = num1*1,4.
Em vez de...
cont1 = num1*1,4.




Eu não disse sem usar variáveis, mas sim, não necessitando de cont1 e 2.
Para você armazenar algo, vai precisar de uma variável.
Eu apenas lhe mostrei uma forma de não usar cont1 e 2, mas vai precisar das outras 3.

recomendo estudar algoritimo, pois é a base disso tudo.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal