C/Visual C - Ayuda, industriales.

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 45 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ayuda, industriales.

Publicado por Pablo (1 intervención) el 04/10/2018 16:50:58
Hola, actualmente estoy haciendo primero en grado en tecnologías industriales, la cosa es que durante el primer semestre tenemos informática y esta va centrada en la programación con C++. Llevo la asignatura al día y no voy muy agobiado, la cosa es que tengo que presentar un programa para mañana y aparentemente no encuentro error en el código, este se me ejecuta correctamente y va bien hasta que deja de ejecutarse, si pulsas cualquier tecla varias veces este acaba como si ya hubiera leído todo el código y ya. Adjunto el enunciado del problema y mi codigo a ver si me podéis ayudar, gracias de antemano.
enunciado:
36. Implementar un programa que gestione el sistema de puntos que van acumulando y canjeando los clientes de una gasolinera. De manera individual y dependiendo de la cantidad de combustible repostada, cada cliente consigue el siguiente número de puntos, los cuales se acumularán a los ya obtenidos con anterioridad en un fichero llamado puntos.txt disponible en su tarjeta personal:
• ]0, 15[ euros: 1 punto.
• [15, 30[ euros: 2 puntos.
• [30, 50[ euros: 4 puntos.
• [50, 100[ euros: 6 puntos.
• [100, …] euros: 8 puntos.
Se entiende que cada punto conseguido es equivalente a 0.5 euros, canjeable en los repostajes posteriores a aquel en el cual se ha obtenido.
En cada ejecución, el programa debe solicitar al usuario que proporcione la cantidad (en euros) de combustible repostado (el cual no podrá ser menor o igual a 0, en cuyo caso se solicitará de nuevo). Al mismo tiempo, debe leer del fichero los puntos acumulados de repostajes anteriores y mostrar dicha información por pantalla, así como su equivalente en euros (0,5 euros por punto). A continuación, debe preguntarle al usuario cuántos, de sus puntos acumulados, desea canjear. Dicho número de puntos no podrá ser menor que 0 ni superior al número de puntos acumulados. Adicionalmente el importe económico correspondiente al número de puntos a canjear no podrá ser superior a la cantidad que acabamos de repostar. En caso de que no se cumpliera alguno de los requisitos anteriores, el programa mostrará un mensaje de error advirtiéndolo y pediría dicho número de puntos de nuevo.
Para finalizar, el programa debe mostrar por pantalla el importe definitivo a abonar y actualizar el número de puntos de la tarjeta, teniendo en cuenta los puntos que hayan sido
canjeados y conseguidos en el repostaje actual.
Antes de la primera ejecución del programa a desarrollar, debemos crear a mano el fichero puntos.txt, almacenando en el mismo un 0 como número de puntos de partida


y aqui mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# include <stdio.h>
# include <stdlib.h>
 
 
int main(){
	FILE *doc;
	int puntos, descuento, combustible;
	float precio_final;
 
	doc=fopen("puntos.txt","r");
	if(doc=NULL){
		printf("no se pueden cargar tus puntos, sorry mate");
	}
	printf("\t\t\t Vamos a cargar tus puntos:\n");
	fscanf(doc,"%d", &puntos);
	printf("tienes: %d puntos\n", puntos);
	printf("cuanto has repostado?\n");
 
	scanf("%d", &combustible);
	while(combustible<=0){
		printf("combustible incorrecto, repitelo\n");
		scanf("%d", &combustible);
	}
 
if(combustible>0 && combustible<15){
	puntos=puntos+1;
}
if(combustible>=15 && combustible<30){
	puntos=puntos+2;
}
if(combustible>=30 && combustible<50){
	puntos=puntos+4;
}
if(combustible>=50 && combustible<100){
	puntos=puntos+6;
}
if(combustible>=100){
	puntos=puntos+8;
}
printf("Puntos actualizados: %d\n", puntos);
printf("cuantos puntos quires gastar?:\n");
scanf("%d", descuento);
 
while(descuento<0 || descuento>puntos){
	printf("no tienes esos puntos, vuelve a introducir la cantidad:\n");
	scanf("%d", descuento);
}
 
precio_final=combustible-(descuento*0.5);
 
while(precio_final<0){
	printf("has gastado demasiados puntos\n");
	printf("vuelve a decirme cuantos puntos quieres gastar (recuerda no pasarte):\n");
	scanf("%d", descuento);
  if(descuento<0 || descuento>puntos){
	printf("no tienes esos puntos, vuelve a introducir la cantidad:\n");
	scanf("%d", descuento);
}
precio_final=combustible-(descuento*0.5);
}
printf("el precio final sera de: %f \n",precio_final);
puntos=puntos-descuento;
fclose(doc);
doc=fopen("punto.txt", "w");
  fprintf(doc, "%d", puntos);
fclose(doc);
	 system("pause");
 
	return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder