sitter här och knopar på en uppgift, som borde vara simpel..
har skapat hela programmet, men glömde avrundningen så nu håller jag på och försöker fibbla in det utan att ändra på för mycket... men de går inget vidare..
Detta är tänkte som ett ex. När kassören slår in beloppet så kan det vara 23.4 med avrundning på femtioöringen blir det 23 kronor och vid betalning med 23.6 blir det 24 kronor, enkelt är det juh att avrunda.. men lyckas inte få in det i mitt program.. någon som kan säga var jag ska ändra? :q
/************************* INKLUDERING AV FILER *************************
inkludera fil för I/O, nödvändig för input från tangentbord och output
till skärmen.
*/
#include<stdio.h>
#include<math.h>
// inkluderingsfil för skoj! :-D finns dock ej ANSI C.
#include<stdlib.h>
// Funktionen vaxel().
void vaxel(float vaxelsumma) {
/*********************DEKLARERA VARIABLAR*****************************/
// Deklaration av nödvändiga variablar i funktion.
// deklarera sedlar
int sec_check = 500, sedel_100 = 100, sedel_50 = 50, sedel_20 = 20;
// deklarara kronor
int kr_10 = 10, kr_5 = 5, kr_1 = 1;
// deklarera summor.
int tmp_vaxelsumma = 0;
/**********************************************************************/
// Undersök om växeln överstiger den tillåtna summan att betala ut.
// Om den inte överstiger, visa antalet valörer och växel, annars
// visa ett felmeddelande! :)
if(vaxelsumma < sec_check) {
// Matematiska utberäkningar.
// Temporär summa som används vid uträkning!
tmp_vaxelsumma = (int)vaxelsumma;
// Plocka ut antal 100-lappar
printf("100 kr sedlar: %i\n", (tmp_vaxelsumma / sedel_100));
// Plocka ut antal 50-lappar
tmp_vaxelsumma = tmp_vaxelsumma % sedel_100;
printf("50 kr sedlar: %i\n", (tmp_vaxelsumma / sedel_50));
// Plocka ut antal 20-lappar
tmp_vaxelsumma = tmp_vaxelsumma % sedel_50;
printf("20 kr sedlar: %i\n", (tmp_vaxelsumma / sedel_20));
// Plocka ut 10 kronor
tmp_vaxelsumma = tmp_vaxelsumma % sedel_20;
printf("10 kronor: %i\n", (tmp_vaxelsumma / kr_10));
// Plocka ut 5 kronor
tmp_vaxelsumma = tmp_vaxelsumma % kr_10;
printf("5 kronor: %i\n", (tmp_vaxelsumma / kr_5));
// Plocka ut 1 kronor
tmp_vaxelsumma = tmp_vaxelsumma % kr_5;
printf("1 kronor: %i\n", (tmp_vaxelsumma / kr_1));
// Hur mycket kunden skall ha tillbaka
printf("\n\nVäxel: %.0f", vaxelsumma);
} else {
// Rensa skärmen!
system("cls");
// Skriv ut skärm meddelande!
printf("\nEtt fel uppstod,kassaapparaten hängde sig!");
// hindra från avslut!
getchar();
}
}
/*********************************************************************/
// Funktionen main().
int main(void) {
/*********************DEKLARERA VARIABLAR*****************************/
// Deklaration av nödvändiga variablar i funktion.
// Deklarera summor. // Gjort ändring från int till float.
float att_betala = 0, kund_betala = 0, vaxel_summa = 0, kvar = 0;
char LogVar[1];
LogVar[1] = 'n';
/*********************************************************************/
// Skriv ut huvud för programmet.
printf("This program is made by Fredrik Malmstrom (c) 2004\n\n\n");
// Fråga efter hur mycket kunden har köpt för
printf("Kunden har handlat för: ");
scanf("%f",&att_betala);
// Fråga efter hur mycket kunden betalar.
printf("\nKunden betalar: ");
scanf("%f",&kund_betala);
// Fel hantering!
// Om kundens inbetalning är för liten.
if(kund_betala < att_betala) {
printf("\n\nError: Kunden har betalt för lite!\n");
printf("Kvar att betala: %0.0f \n\n", (att_betala - kund_betala));
// Fråga efter hur om kunden betalar kvarvarande summa eller ångrar sig.
printf("\nVill kunden betala kvarvarande summa? y/n ");
scanf("%s",LogVar); // <-- Fel uppstår.. programfel!
if(LogVar[0] != 'n') {
// Fråga efter hur mycket kunden betalar, förutsätter
// att de betalar resterande summa!
printf("\n\nKunden betalar: ");
scanf("%f", &kvar);
// Räkna ut växeln!
vaxel_summa = (kund_betala + kvar) - att_betala;
/*
räkna ut vilka valörer och hur mycket av varje valör med
med funktionen vaxel.
*/
vaxel(vaxel_summa);
// hindra från avslut!
getchar();
return 0;
} else {
// hindra från avslut!
getchar();
return 0;
}
} else {
/*
räkna ut vilka valörer och hur mycket av varje valör med
med funktionen vaxel, om de betalar tillräckligt från början.
*/
vaxel_summa = kund_betala - att_betala;
vaxel(vaxel_summa);
// hindra från avslut!
getchar();
return 0;
}
}
/***************************** END OF FILE ******************************/
Eftersom det troligtvis handlar om skolarbete, tänker jag inte ge dig färdig kod.
1. Separera summan i en heltalsdel och en rest
2. Om 0<=rest<0.25 gör inget
3. Om 0.25<=rest<0.75 lägg till 0.5 till heltalsdelen
4. Annars lägg till 1 till heltalsdelen
5. Den avrundade summan finns nu i heltalsdelen.
Att få heltalsdelen av ett tal kan göras genom att konvertera det till en int.
PS: Den fruktansvärt osmakliga bilden på dig (?) har nu fått mig att stänga av avatarer för gott i inställningarna. :)
277 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e