Läsa in och omvandla poäng till betyg
Uppgiften lyder som följer.
Skriv en metod LäsPoäng för att läsa elevens betygspoäng i de olika ämnena.Poängen ska du spara i en array, vektor eller lista.
När metoden anropas så ska användaren få mata in ett antal betygspoäng.
Vilka betygspoäng som ska matas in styrs avinnehållet i fältet ämnen.
Skriv en metod som ska omvandla poängen till betyg enligt skalan A-F.
Betyget A motsvarar 100 poäng. Betygen ska du lagra i ett fält (array, vector eller list).
Som sagt jag är helt ny och fattar inte hur jag ska få till så att siffrorna blir bokstäverna så att säga.
Här kommer min kod.. Hoppas någon kan förklara för mig så jag förstår.
jag vill inte bara att någon löser det åt mig men förklarar och ger tips så jag kan lära mig :D tack för hjälpen!
#include <iostream>
#include <cmath>
#include <array>
#include <string>
using namespace std;
void lasPoang(string amnen [], int poang [], int n, char betyg[]){
int poangen;
for (int i = 0; i < n; i++){
cout << "Mata in poängen mellan 0-100 för " << amnen[i] << ": ";
cin >> poangen;
poang[i] = poangen;
}
}
void skrivUt(string amnen[], char betyg[], int antal) {
for(int i = 0; i < antal; i++){
cout << "Betyg i " << amnen[i] << ": "<< betyg[i] << endl;
}
}
int main()
{
string amnen [5] = {"Matematik","Svenska","Engelska","Historia","Fysik"};
int poang [6] = {100 <= 90, 90 <= 80, 80 <= 70, 70 <= 60, 60 <= 50, 50 <= 0};
char betyg [6] = {'A', 'B', 'C', 'D', 'E', 'F'};
int antal;
lasPoang(amnen, poang, 5, betyg);
for (int i = 0; i < 5; i++){
cout << amnen[i] << " : ";
cout << poang[i] << " ";
}
skrivUt(amnen, betyg, antal);
return 0;
}
Rubrik ändrad från "Tjenare! Jag är helt ny på programmering." till nuvarande. En beskrivande rubrik underlättar för de som svarar, och hjälper till att skilja trådar från varandra. Läs gärna mer om rubriksättning här. /Smutstvätt, moderator
Metoden lasPoang() lagrar poängen för varje ämne i arrrayen poang (index är samma som i amnen[]).
Du behöver en ny metod som går igenom poang-arrayen och fyller i en array (av samma längd) med bokstavsbetyg.
Själva "översättning" från poäng till bokstav gör du enklast med if-satser som kontrollerar poängintervallen.
Den där int poang[6] innehåller bara nollor, för elementen är resultat av jämförelser. T.ex. ger "100 <= 90" värdet 0.
Okej, tack för svar!
hur ska jag skriva int poang[6] för att det ska bli rätt liksom?
jag vill ju ha så att om man skriver mellan 100-90 så ska de bli ett A.
tänker att det blir ju avgörande för hur if-satsen ska skapas.
har testat if( poang[i]=90<=100)
Betyg[i] = ’A’;
osv men det har inte funkat..
Nej, intervall som begrepp finns inte i C++. Du får uttrycka "x ligger i (80, 90)" som "x > 80 och x < 90".
Det finns säkert någon praktisk implementation av intervall i något bibliotek, kanske t o m standardbiblioteket, men inte i själva språket.
Jag kanske är trög och så men hur ska jag skriva den metoden? hur ser for-loppen ut ut för en sådan?
Sen har jag skrivit en if-sats men den vill inte funka ändå sen vet jag inte vart i koden jag ska lägga den för att den ska funka liksom..
Tacksam för alla svar ni redan skrivit men får inte ihop det..
if(poang[6] < 90 && poang[6] == 100)
betyg[6] = 'A';
else if(poang[6] < 80 && > 90)
betyg[6] = 'B';
else if(poang[6] < 70 && > 80)
betyg[6] ='C';
else if(poang[6] < 60 && > 70)
betyg[6] = 'D';
else if(poang[6] = < 50 && > 60)
betyg[6] = 'E';
else if(poang[6] = > 50)
betyg[6] = 'F';
För att testa ett intervall måste du jämföra med båda gränserna, t ex:
if (poang[i] >= 70 && poang[i] < 80)
betyg[i] = 'C';
Använde index i eftersom du avser att loopa igenom alla dina insamlade poäng.
Varför intervalltest när det räcker med en jämförelse per betygsnivå:
betyg[i] = 'A'; // Antag >= 90
if (poang[i] < 90)
betyg[i] = 'B';
if (poang[i] < 80)
betyg[i] = 'C';
if (poang[i] < 70)
betyg[i] = 'D';
if (poang[i] < 60)
betyg[i] = 'E';
if (poang[i] < 50)
betyg[i] = 'F';
Detta går självklart att skriva betydligt elegantare men för frågan så funkar lösningen!
Tack Peter!
det funkar när jag testar den i ett annat blankt program men nu ska jag få in den under en funktion som sparar allt i en array, då är min nästa fråga hur man kan skriva den funktionen?
Jag försöker kolla runt på youtube osv men hittar inte vad jag vet rätt men så tänker jag så här.
void omvandlaPoang(char betyg[], int poang[], int 6) {
for(int i = o; i<6; i++) {
betyg[i] = 'A';
if (poang[i] < 90)
osv osv eller tänker jag helt fel då?
Fick den att funka! Jag tackar alla som hjälpt mig genom att svara och gjort så jag förstod! Tack återigen!