6 svar
25 visningar
Shali_47 270
Postad: Igår 16:17

Onödig output: Enter your choice (1 - 3);

    


    double exchange_rate = 1.00; // xchange för växelkursen
    int choose; // en int variabel för att spara användarens val
    printf("Your shopping assistant\n\n"); // skriv ut titeln
    
    do{
        // Skriv ut Menyn
        printf("1. Set exchange rate in SEK (current rate: %.2f)\n", exchange_rate); // 
        skriv ut menyn
        printf("2. Read prices in the foreign currency\n");
        printf("3. End\n\n");
        printf("Enter your choice (1 - 3): ");
        scanf("%d", &choose); // ber användaren göra sitt val 
        
        if(choose == 1){
            printf("SET EXCHANGE RATE (1-3) ");
            scanf("%lf", &exchange_rate);
        }else if(choose == 2){
            double SEKsum = 0;
            double UTsum = 0;
            double pris;
            printf("\n");
            
            while(pris >= 0){
                printf("Enter pris - < 0: ");
                scanf("%lf", &pris);
                if(pris < 0){
                    break;
                }
                UTsum += pris;
            }
            SEKsum = UTsum * exchange_rate;
            printf("\nSumman i SEK är:%.2f\n ", SEKsum);
            printf("Summan i UT är:%.2f\n\n ", UTsum);
        }else{
            
        }
    }while(choose != 3); // så länge användaren inte väljer 3 så försätter loopen

    printf("\nEnd of program!\n\n"); // Avsluta programmet
    return 0; // return 0 gör att programmet avslutas successfull


/*
Medan jag väljer 2 för mitt val: 2
Sedan skriver jag pris : -1

output:
Enter your choice (1 - 3): 2

Enter pris - < 0: -1

Summan i SEK är:0.00
Summan i UT är:0.00

1. Set exchange rate in SEK (current rate: 1.00)
2. Read prices in the foreign currency
3. End

Enter your choice (1 - 3): // onödig som jag inte vilja ha den raden, hur kan jag undvika i detta fall?
*/
thedifference Online 321
Postad: Igår 16:32

Du vill alltså att i vissa fall ska inte denna rad köras:

printf("Enter your choice (1 - 3): ");

Då får du slänga den i ett if-block med en boolean som du ser till att uppdatera på lämpliga ställen i koden.

Om du klargör när det är du vill att denna visas eller inte visas så kan vi ge förslag på hur detta kan se ut.

Shali_47 270
Postad: Igår 16:40
thedifference skrev:

Du vill alltså att i vissa fall ska inte denna rad köras:

printf("Enter your choice (1 - 3): ");

Då får du slänga den i ett if-block med en boolean som du ser till att uppdatera på lämpliga ställen i koden.

Om du klargör när det är du vill att denna visas eller inte visas så kan vi ge förslag på hur detta kan se ut.

Jag hade den ⍒

	while(1){
     		printf("Enter pris - < 0: ");
                scanf("%lf", &pris);
                if(pris < 0)break;

                UTsum += pris;
            }
	
	SEKsum = UTsum * exchange

men kravet var inte att man ska kunna använda (1)...
thedifference Online 321
Postad: Igår 16:49

Jag kan inte se att den kodsnutten har något att göra med ditt första problem.

Kan du visa uppgiften?

Shali_47 270
Postad: Igår 16:59
thedifference skrev:

Jag kan inte se att den kodsnutten har något att göra med ditt första problem.

Kan du visa uppgiften?

thedifference Online 321
Postad: Igår 17:16

Test cases, så tjusigt =)

Problemet med test case 6 är antagligen inte att du skriver ut Enter your choice. Problemet är att du inte skriver ut Enter price. Kolla meddelandet överst som förväntas. Du har skrivit en egen variant på svenska.

Med test case 7, din kod skriver inte ut Not a valid choice! under några omständigheter. Har du visat samma kod som du testar?

Shali_47 270
Postad: Igår 18:05 Redigerad: Igår 19:04

Initializing av pris var felet i hela koden. Jag borde göra det innan while-loopen, och därefter återställde det till 0 inför varje ny inmatning för att undvika att tidigare värden påverkar den nya loopen.

Svara
Close