Permalänk
Medlem

[C++] problem med vektorer

Hej

Jag har ett problem med ett program jag ska göra.

programmet ska läsa in ens för- och efternamn, vilket betyg man borde få (man kan välja mellan A, B ,C och D) samt ens ålder.

problemet är att betyget som ska visas är inte betyget man skriver in, utan ett lägre ( A blir B osv.).
Jag vet att man kan använda fyra if-satser, men det är en uppgift i en bok så det ska gå med vektorer eller strukturer.

Om någon kunde hjälpa till med detta vore det snällt!

Visa signatur

¯\_(ツ)_/¯

Permalänk
Medlem

Måste erkänna att jag inte riktigt fattar vad det är meningen att du ska göra. Vad ska du med en vektor till?

Permalänk
Medlem

ok, jag skriver av uppgiften helt:

Skriv ett program i C++ som begär och visar information enligt nedan.
Vad heter du i förnamn? Lina
Vad heter du i efternamn? Eriksson
Vilket betyg borde du få? B
hur gammal är du? 22

Namn: Eriksson, Lina
Betyg: C
Ålder: 22

Observera att programmet bör kunna acceptera dubbla förnamn. Lägg också märke till att programmet automatisk
justerar betyget nedåt, med andra ord en bokstav längre till i alfabetet. Utgå från att användaren begär A, B, eller
C så behöver du inte bekymra dig om steget mellan D och F.

Det är vad uppgiften säger, jag behöver hjälp med delen om betyget, jag kan få den att visa betyget man skrev in, men inte ett betyg neråt. Det här är en stor gåta för mig.
Vektordelen kommer från att uppgiften kommer från kapitlet om vektorer, strukturer och pekare.

Visa signatur

¯\_(ツ)_/¯

Permalänk
Hedersmedlem

cout << (char)(betyg +1)
kanske?

Permalänk
Medlem

näe, det funkade inte.

jag vet inte riktigt hur jag ska definiera char betyg
jag gör det som:

char betyg[5] = "ABCD";

men jag vet inte om det är rätt

EDIT: glömde just att säga att om jag skriver cout << (char)(betyg + 1); så kommer det bara upp en ruta

Visa signatur

¯\_(ツ)_/¯

Permalänk
Hedersmedlem
Skrivet av Jhuyt:

näe, det funkade inte.

jag vet inte riktigt hur jag ska definiera char betyg
jag gör det som:

char betyg[5] = "ABCD";

men jag vet inte om det är rätt

EDIT: glömde just att säga att om jag skriver cout << (char)(betyg + 1); så kommer det bara upp en ruta

Behöver du verkligen ett fält för betygen? Räcker det inte att läsa in en char?

Permalänk
Medlem

De ska ju ändras? Man kan ju skriva 4 if-satser, men enligt boken ska det gå utan.

Hursomhelst är jag nybörjare på det här, hållt på i kanske 3 veckor nu

Visa signatur

¯\_(ツ)_/¯

Permalänk
Medlem

Om vektorn i fråga inte är en C-sträng (alltså en char array/vektor/fält) för namnet så fattar i alla fall inte jag vad du ska ha den till. Som det låter på uppgiften är det ju tänkt att man ska göra som Elgot föreslog (vilket skulle ha blivit ett problem om man fick mata in D, vilket uppgiften klart och tydligt säger att man inte ska bekymmra sig om).

Du behöver inga if-satser alls. Läs in en bokstav till en char (vanlig enkel char, ingen array) och öka eller minska värdet med 1 för att gå till bokstaven efter eller före, precis som Elgot sa. Pröva t.ex:

char tmp = 'B'; cout << (char)(tmp-1) << ", " << tmp << ", " << (char)(tmp+1) << endl;

och se vad du får ut.

Permalänk
Medlem

Wow, danke på den!

Tack för att ni hjälper en vilsen norrlänning i dataträsket en fredagskväll !!!

Visa signatur

¯\_(ツ)_/¯

Permalänk
Medlem

hmm, jag kom på en följdfråga, om man får stjäla sina egna trådar.

Jag får med å, ä och ö genom att skriva:

#include <windows.h> i headern och sedan:

SetConsoleOutputCP(1252) i int main(),

men finns det något enklare sätt?

Visa signatur

¯\_(ツ)_/¯

Permalänk
Permalänk
Medlem

här har vi ett fint exempel på vad man ska göra.
kan du inte eller har problem att fixa de
1. läs boken.
2. läs/google på internet
3. fråga en polare som går i samma klass eller om du känner någon som kan lite.
4. säg till läraren "du.. jag fattar inte de här? kan du hjälpa mig lite? "(är ju de lärare är till för....)
5 ????
6. fortfarande inte? tråd på sweclockers då!

kommer ihåg många sena kvällar av att klia sig i skallen och tänka "hur fan får jag till den här skiten?" ja jo fick ju till de efter ett tag med för mycket onödig kod då jag inte kunde göra de på "rätt" sätt om man säger så, but hey. jag försökte och fick till de på ett sätt, drygt och dålig må de va men man lär sig. fick ifs hjälp av läraren som visa hur man skulle göra de efteråt

Visa signatur

Maximus X Hero - 8700k @5.1GHz - H115i - 32GB LPX@3466MHz - MSI 980Ti Gaming - EVGA SuperNova 750 G2 - Asus vg248qe - FD R5

Permalänk
Medlem

Du råkar inte peka på fel bokstav i array'en?

betyg[5] = "ABCD";
betyg[0] -> A
betyg[1] -> B

betyg[4] -> ??

Permalänk
Medlem

Jag fick det att funka, läs Thomas Hs inlägg.
Det lustiga är att jag har läst igenom delen om strängar men det står ändå inget där

Visa signatur

¯\_(ツ)_/¯

Permalänk
Medlem
Skrivet av Jhuyt:

hmm, jag kom på en följdfråga, om man får stjäla sina egna trådar.

Jag får med å, ä och ö genom att skriva:

#include <windows.h> i headern och sedan:

SetConsoleOutputCP(1252) i int main(),

men finns det något enklare sätt?

jag vet inte hur det är i andra program men om du använder visual studio c++ så kan man i spar alternativen välja att lägga till "nordic codepage" eller nått liknande sen behöver man inte bry sig om det mer i ens projekt och int main() kan då vara som vanligt. Det kan nog heta "nordic codepage 1252" nu när jag tänker efter.

Visa signatur

PC1: Sabertooth X58, i7 980, 24GB RAM, 2st GTX 470, Intel 330 180GB SSD, Corsair AX850.