Permalänk
Medlem

Problem med logiskt uttryck

Hejsan, här har jag en metod som antingen ska tillåta försäljning, alternativt neka försäljning.

(1) Försäljning tillåts ifall det sökta artikelnumret finns och ifall det finns fler än 0 exemplar.

for(int i = 0; i < articles.length; i++){

if(articles[i][0] == artikelnummer){

//försäljning går igenom
if(antal <= articles[i][1] && antal != 0 && articles[i][1] != 0){

articles[i][1] -= antal;
trans = true;
}
}

(2) Här har jag problem med att definiera ett logiskt uttryck som står för att försäljning inte ska gå igenom på grund av att artikelnumret inte finns

articles[i][0] != artikelnummer

- kommer alltid att vara sant då det finns gott om artiklar som har artikelnummer som inte är lika med vad som söks efter

- Hur kan jag formulera detta i en if sats? satsen ska vara sann när man försöker köpa något som inte finns

Artiklarna är sparade så här: articles[10][3]
0 - artikelnummer
1 - Antal
2 - pris

Permalänk
Skrivet av lotusxmw:

Hejsan, här har jag en metod som antingen ska tillåta försäljning, alternativt neka försäljning.

(1) Försäljning tillåts ifall det sökta artikelnumret finns och ifall det finns fler än 0 exemplar.

for(int i = 0; i < articles.length; i++){

if(articles[i][0] == artikelnummer){

//försäljning går igenom
if(antal <= articles[i][1] && antal != 0 && articles[i][1] != 0){

articles[i][1] -= antal;
trans = true;
}
}

(2) Här har jag problem med att definiera ett logiskt uttryck som står för att försäljning inte ska gå igenom på grund av att artikelnumret inte finns

articles[i][0] != artikelnummer

- kommer alltid att vara sant då det finns gott om artiklar som har artikelnummer som inte är lika med vad som söks efter

- Hur kan jag formulera detta i en if sats? satsen ska vara sann när man försöker köpa något som inte finns

Artiklarna är sparade så här: articles[10][3]
0 - artikelnummer
1 - Antal
2 - pris

Om articles är din "databas" kanske du vill ha en funktion

int get_article_index(artikelnummer)

som returnerar vilket index ditt artikelnummer har, i de fallen du hittar det och -1 annars.

I övrigt, vad händer i de fall där användaren ger dig ett korrekt artikelnummer, men negativt antal artiklar?

Permalänk
Medlem
Skrivet av survivalcode:

Om articles är din "databas" kanske du vill ha en funktion

int get_article_index(artikelnummer)

som returnerar vilket index ditt artikelnummer har, i de fallen du hittar det och -1 annars.

I övrigt, vad händer i de fall där användaren ger dig ett korrekt artikelnummer, men negativt antal artiklar?

I det fallet så går försäljningen inte igenom.

Permalänk
Medlem
Skrivet av survivalcode:

Om articles är din "databas" kanske du vill ha en funktion

int get_article_index(artikelnummer)

som returnerar vilket index ditt artikelnummer har, i de fallen du hittar det och -1 annars.

I övrigt, vad händer i de fall där användaren ger dig ett korrekt artikelnummer, men negativt antal artiklar?

En möjligt lösning skulle vara if(!articles[i][0].contains(artikelnummer)),
men här får jag error: int dereferenced.
Hur löser jag det?

Permalänk
Medlem

if (antal <= 0) { printf("Must purchase more than 0 copies"); return false; } int articleIdx = -1; for(int i = 0; i < articles.length; i++) { if(articles[i][0] == artikelnummer) { articleIdx = i; break; } } if (articleIdx < 0) { printf("Couldn't find the article specified"); return false; } if (antal > articles[articleIdx][1]) { printf("Not enough copies of article"); return false; } // TODO: Kolla att man har råd articles[articleIdx][1] -= antal; // TODO: Dra bort kostnaden från dina pengar return true;

Typ sådär?

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.