Inlägg

Inlägg som Marica har skrivit i forumet
Av Marica

Ok, ska tänka på det där med [code], visste inte det!

Jag vet inte om den alltid ska göra de andra två.
Den ska först jämföra vid "if" sen byta plats om den är större till vänster än höger, så att den minsta kommer först & till slut den största kommer sist.

Men såg nu när du skrev, att jag saknade {} efter "if" & det gjorde susen, nu funkar det iaf.

Stirrar & provar så mycket att man ser ju inte det självklara....
Tack för hjälpen!

Av Marica

Hur får jag bort: "temp" is undefined?

Hej,

Har problem med en bubble sort i C++.

Jag har skrivit in den från våran lärobok, men får fel på en av "temp" i sorteringskoden.

Så här ser det ut:

int myList[] = { temperatur[0],temperatur[1], temperatur[2], temperatur[3] };
int max = 3;

for (int i = 0; i < max; i++)
{
int nrLeft = max - i;
for (int j = 0; j < nrLeft; j++)
{
if (myList[j] > myList[j + 1])
int temp = myList[j]; <===== denna "temp" är det inga problem med <====
myList[j] = myList[j + 1];
myList[j + 1] = temp; <===== denna "temp" är enligt felmedd. : undefined <====
}
}

for (int i = 0; i < 4; i++)
cout << myList[i] << " \n";

Varför går en igenom, men inte den andra?
Dessa står väl som temporary?
har provat att skriva
int temp
int; temp;
som Visual Studios föreslår, men det vill iaf inte lösa sig.

För jag hade det bekymret tidigare när jag hade det som int temp = temperatur

Är jag helt ute & cyklar igen? *suck* Varför e d så svårt...... !?

Tacksam för hjälp
fr nybörjaren

Av Marica
Skrivet av Daz:

Du kan nog göra mer i en IF-sats än du redan gör. När du upptäcker ett C t.ex. så skulle du kunna komma ihåg det någonstans. En simpel lösning vore troligen att bara ha en räknare som heter antalC och när du stöter på ett C så kör du +1 i den. En snyggare lösning är nog en array med antalet av alla betygssteg i sig men det verkar inte vara ett krav för uppgiften.

Tackar så mycket för hjälpen! Det funkade!
Hoppar glädjeskutt nu!
Trevlig helg!

Av Marica
Skrivet av Daz:

Du kan nog göra mer i en IF-sats än du redan gör. När du upptäcker ett C t.ex. så skulle du kunna komma ihåg det någonstans. En simpel lösning vore troligen att bara ha en räknare som heter antalC och när du stöter på ett C så kör du +1 i den. En snyggare lösning är nog en array med antalet av alla betygssteg i sig men det verkar inte vara ett krav för uppgiften.

Så i varje if-sats så kan jag alltså lägga till i antalA/C/F
men skriver man bara den som:

antalA = antalA +1;

& sen kör man bara cout på antalA?

Vet inte om jag skulle ha det på ett annat sätt med utskriften, så där fick jag till det! ~
var bara så nöjd när det funkar.....

Av Marica
Skrivet av perost:

Du kan lösa det på båda sätten. Du kan lösa det utan en array genom att gå igenom arrayen med poäng och kolla hur många som motsvarar A och skriva ut det, sen gå igenom den igen och kolla hur många som motsvarar C och skriva ut det, o.s.v.

Det andra sättet är att ha en array där t.ex. första elementet är hur många A det finns, o.s.v. Då behöver du bara gå igenom poängen en gång och öka rätt element i arrayen för varje betyg du hittar. Fördelen med denna lösning är att den är snabbare eftersom du inte behöver gå igenom poängen flera gånger, vilket inte spelar någon roll i en sån här uppgift men ändå bra att tänka på för framtiden.

Lite andra saker att tänka på är att du verkar förvirrad över vad syftet med betyg-arrayen egentligen är. Du initialiserar den med bokstäverna A till F, sen skriver du direkt över den med siffror (där t.ex. 90-100 = -10). Är det kanske tänkt att du egentligen ska använda den arrayen för att räkna antalet av varje betyg?

Tänk också på att = är en tilldelning medan == är en likhetsjämförelse. Så när du skriver t.ex. if(poang[i] = betyg[0]) så skriver du över poang[i] med värdet av betyg[0], vilket sen kommer vara falskt om värdet är 0 och sant annars. Så många av dina if-satser gör inte vad du tänkt att de ska göra.

Tack, ska prova det

Av Marica
Skrivet av Daz:

Kan inte C++ men du listar ju ut vilka betyg varje ämne har, skulle du kunna spara den informationen för de relevanta betygen på något sätt kanske? Utöver att skriva ut dem då.

ja, det är det jag lurar på nu, men har inte fått dit det ännu, tyvärr

Av Marica
Skrivet av Mr.W:

Du räknar ju redan ut vilket betyg man får, ett enkelt sätt är ju att spara den informationen i en array.

har provat lite nu & sett nu att inget sparas i betyg alls, all info går bara från if-satsen.
hur får jag infon dit?

provade att stoppa in betyg i else if-satsen så här: men det gjorde ingen skillnad

if (betyg[0] = poang[i] >= 90 && poang[i] <= 100) {

cout << " " << amnen[i] << " | A \n";
cout << " --------------------------- \n";
else if (betyg[1] = poang[i] >= 80 && poang[i] < 90) {

cout << " " << amnen[i] << " | B \n";
cout << " --------------------------- \n";

Av Marica

Men jag har provat/letat i 2 dagar på hur jag ska får fram mitt omvandlat resultat, så jag kan räkna det antal av varje betyg men jag går ju bet, det bara far runt i hela huvudet....

Ska jag spara det i en ny array eller kan jag plocka det från minnet ovan?
Ska jag använda en ny for eller if eller nåt annat?

Av Marica

ja, men hur? får inte till det....

fick den att skriva ut det uträknade betyget (isf som jag nu har det sparat "som tex A" i cout.) men sen fick jag så många fel att jag var tvungen att ta tbx allt jag provat för att det ens skulle funka igen.....

Av Marica

Kan inte få till statistiken som i min inlämninguppgift i c++ (frågade läraren men fick inget svar)

vi ska skriva in användarens poäng i fem ämnen,
omvandla poängen till A-F betyg,
samt skriva ut betygen,
sen beräkna hur många A, C & F som användaren har angett <--------- här är mitt problem
även räkna ihop totalpoängen.

Frågade lärare om hjälp om vilken metod jag skulle använda, men fick inget svar på det!

Helt ny på detta & känner mig väldigt frustrerad & dålig när jag inte kan.

detta har jag fått till:
(har lite på slutet som jag försökt med som inte funkar)

#include <iostream> #include <array> #include <cmath> using namespace std; int main() { string amnen[5] = { "Matematik", "Svenska", "Engelska", "Historia", "Fysik " }; int poang[5]{}; char betyg[6] = {'A', 'B', 'C', 'D', 'E', 'F'}; betyg[0] = 90-100; betyg[1] = 80-89; betyg[2] = 70-79; betyg[3] = 60-69; betyg[4] = 50-59; betyg[5] = 1-49; int antal = 0; cout << "Valkommen till ditt betyg\n"; cout << "Ange ditt poangbetyg (1-100) i " << amnen[0] << " : "; //lasPoang cin >> poang[0]; cout << "Ange ditt poangbetyg (1-100) i " << amnen[1] << " : "; cin >> poang[1]; cout << "Ange ditt poangbetyg (1-100) i " << amnen[2] << " : "; cin >> poang[2]; cout << "Ange ditt poangbetyg (1-100) i " << amnen[3] << " : "; cin >> poang[3]; cout << "Ange ditt poangbetyg (1-100) i " << amnen[4] << " : "; cin >> poang[4]; float total = 0; total = poang[0] + poang[1] + poang[2] + poang[3] + poang[4]; cout << " \n"; cout << " ==== Ditt Betyg ====\n"; // skrivUtBetyg cout << " --------------------------- \n"; for (int i = 0; i < 6; i++) { if (betyg[0] = poang[i] >= 90 && poang[i] <= 100) { cout << " " << amnen[i] << " | A \n"; cout << " --------------------------- \n"; } else if (poang[i] >= 80 && poang[i] < 90) { cout << " " << amnen[i] << " | B \n"; cout << " --------------------------- \n"; } else if (poang[i] >= 70 && poang[i] < 80) { cout << " " << amnen[i] << " | C \n"; cout << " --------------------------- \n"; } else if (poang[i] >= 60 && poang[i] < 70) { cout << " " << amnen[i] << " | D \n"; cout << " --------------------------- \n"; } else if (poang[i] >= 50 && poang[i] < 60) { cout << " " << amnen[i] << " | E \n"; cout << " --------------------------- \n"; } else if (poang[i] >= 1 && poang[i] < 50) { cout << " " << amnen[i] << " | F\n"; cout << " --------------------------- \n"; } } cout << "Totalt har du " << total << " poang\n"; // cout << "skriv ut " << betyg[1] << " nu \n"; /* for (int i = 0; i < 3; i++){ if (poang[i] = betyg[0]) { antal = antal + 1; cout << "Du har " << antal << " " <<betyg[0] << " st A\n"; } else if (betyg[2] = sum[1] + 1) { // har med 3 olika sum tidigare cout << "Du har " << sum[1] << " st C\n"; } else if (betyg[5] = sum[2] +1) { cout << "Du har " << sum[2] << " st F\n"; } } cout << "Totalt har du " << antal[0] << " poang\n"; cout << "Totalt har du " << antal[1] << " poang\n"; cout << "Totalt har du " << antal[2] << " poang\n"; */ return 0; }