Kört fast med programeringsuppgift i C++

Permalänk
Medlem

Kört fast med programeringsuppgift i C++

Hej!

Har precis börjat läsa C++, men jag har kört fast med en uppgift.

Uppgiften går ut på olika in och utmatnings metoder.
Vi får bara använda 4 metoder, och alla är redan deklarerade.
Det jag har att leka med är:

string str; int heltal; double flyttal; char tecken;

Det jag ska göra är att skriva in 3 ord och skriva ut dessa:
inmatning: Skriv in tre ord: Testar ett program
utskrift: Du skrev in: "Testar", "ett" och "program"
Det ska se ut exakt så där.

Det jag förstår är att jag behöver leka med str, jag har en liten aning att det är med str.find
Men jag vet inte hur jag ska använda den för att få ut de enstaka orden.

Eddit:

Problemet är löst. på det sätt som twonkey visar nedan // Nivres

Visa signatur

| Ryzen 7 5800X | X570S AORUS PRO AX | 32GB FURY DDR4 | XFX Radeon RX 6800 XT MERC 319 | Fractal Design Define R6 | 2.5 TB M.2 SSDs |

Permalänk
Medlem

http://www.cplusplus.com/reference/string/string/substr/
Leta upp " ", plocka ur, repetera tills det är slut.

I java hade jag sagt tokenizer, men har inte full koll på C++. Om du vill gräva djupare så
http://stackoverflow.com/questions/53849/how-do-i-tokenize-a-...

Hur som helst så ska första länken nog kunna lösa din uppgift!:)

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Problemet jag ser med substr är att jag behöver använda mer än en string. Problemet är att jag endast använda en variabel av respektive datatyp (totalt fyra).

och det man skriver in är "Testar ett program", själva "" läggs till när orden skrivs ut.

Visa signatur

| Ryzen 7 5800X | X570S AORUS PRO AX | 32GB FURY DDR4 | XFX Radeon RX 6800 XT MERC 319 | Fractal Design Define R6 | 2.5 TB M.2 SSDs |

Permalänk
Medlem

Är du helt säker på att uppgiften är så att man bara får använda en sträng variabel? Är det inte så att uppgiftsgivaren menar att du endast får använda de fyra _typerna_ av variabler? Låter totalt idiotiskt annars-.-

Om det nu är så att du inte får ha några andra variabler så kan man rätt enkelt lösa det med rekursion, men känns inte som att det är något läraren är ute efter då detta verkar vara en uppgift som man får första dagen på en grundkurs -.-

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Hedersmedlem

Ett alternativ är ju att i en loop testa varje tecken och antingen skriva ut det (om det inte är ett blanksteg) eller skriva ut kommatecken och liknande.

Permalänk
Medlem
Skrivet av Elgot:

Ett alternativ är ju att i en loop testa varje tecken och antingen skriva ut det (om det inte är ett blanksteg) eller skriva ut kommatecken och liknande.

Självklart, men han behöver även kolla om det ska vara komma eller ett "och" osv för att få utskriften exakt, klart det går att göra i en loop men känns väldigt omständligt och opedagogiskt med en sån uppgift. Tror snarare TS har missförstått anvisningarna. Vi får väl se vad som händer!:P

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem
Skrivet av Gnejs:

Är du helt säker på att uppgiften är så att man bara får använda en sträng variabel? Är det inte så att uppgiftsgivaren menar att du endast får använda de fyra _typerna_ av variabler? Låter totalt idiotiskt annars-.-

Om det nu är så att du inte får ha några andra variabler så kan man rätt enkelt lösa det med rekursion, men känns inte som att det är något läraren är ute efter då detta verkar vara en uppgift som man får första dagen på en grundkurs -.-

Det som står i kraven är:

KRAV: Du far endast använda en variabel av respektive datatyp (totalt fyra)!.

Men jag får prata med läraren i morgon. Det är första labben i C++ grundkurs, och jag tycker det känns lite överkurs att göra en loop.

Själva delarna med ["" , och] går ju att lägga in i själva utskriften. Så att man hämtar första ordet. Men först skriver ut ett citattecken, sedan ordet och sedan citattecken och komma. och sedan fortsätta på det sättet.

// Nivres

Visa signatur

| Ryzen 7 5800X | X570S AORUS PRO AX | 32GB FURY DDR4 | XFX Radeon RX 6800 XT MERC 319 | Fractal Design Define R6 | 2.5 TB M.2 SSDs |

Permalänk
Medlem
Skrivet av Nivres:

Det som står i kraven är:

KRAV: Du far endast använda en variabel av respektive datatyp (totalt fyra)!.

Men jag får prata med läraren i morgon. Det är första labben i C++ grundkurs, och jag tycker det känns lite överkurs att göra en loop.

Själva delarna med ["" , och] går ju att lägga in i själva utskriften. Så att man hämtar första ordet. Men först skriver ut ett citattecken, sedan ordet och sedan citattecken och komma. och sedan fortsätta på det sättet.

// Nivres

kommer inte riktigt ihåg hur jag gjorde men saken är att orden hamnar i bufferten, alltså behöver du bara skriva om cin och cout tills du fått ut så många ord du behöver tex

string ord;
cout<<"skriv...";
cin>>ord;
cout<<ord;
cin>>ord;

och sen lägga till citat tecken på rätt ställe

Visa signatur

Desktop: i7-6700k @ 4.5GHz | 32GB RAM | 4 TB SSD | RTX 3080 TI | Define R5
Laptop: Razer Blade 15 Base 2020
Mobil: Iphone 13 Pro
konsol: PS4 slim 1TB

Permalänk
Medlem

som elgot är inne på, men loopa först en gång och summera antalet mellanslag i din int-variabel så du kan hålla reda på om du ska skriva ut ", " eller " och " när du loopar igenom och skriver ut strängen.

Permalänk

Om jag förstått uppgiften rätt så vill han att du ska skriva in ett ord i taget och sedan skriva ut de i ett meddelande.

Visa signatur

i5 6700K @4.5GHz -Noctua NH-U14S -Asus Geforce GTX 980 Ti Strix DirectCU III -ASUS PRO GAMING Z170 -Crucial DDR4 16 GB -Crucial MX300 750GB -Corsair RM750i - NZXT H440W Silent Ultra - ASUS VC239 -Dell Professional P1914S IPS

Permalänk
Hedersmedlem
Skrivet av helmet:

som elgot är inne på, men loopa först en gång och summera antalet mellanslag i din int-variabel så du kan hålla reda på om du ska skriva ut ", " eller " och " när du loopar igenom och skriver ut strängen.

Dock var det väl givet att det gäller tre ord?

Permalänk
Medlem

Det är tre ord som man skriver in tillsammans, inte ett och ett. alltså. cin blir "Testar ett program".

Visa signatur

| Ryzen 7 5800X | X570S AORUS PRO AX | 32GB FURY DDR4 | XFX Radeon RX 6800 XT MERC 319 | Fractal Design Define R6 | 2.5 TB M.2 SSDs |

Permalänk
Medlem

Loopa igenom strängen och ha en counter bara som räknar ner från 3 för att hålla koll på om det ska vara ett komma eller ordet "och". Annars kan du ju appenda in det i strängen och sedan bara skriva ut strängen. Borde väl finnas någon find-replace-metod som låter lämplig.

Visa signatur

Desktop: Intel i5-22500k @ 3.30GHz, Gigabyte GTX 560Ti 1GB, 8GB Corsair @ 1600MHz, Windows 7 Pro and Arch Linux
Laptop: Macbook Pro 13" (early 2011) w/ Mac OS X 10.8 Mountain Lion

Permalänk
Medlem

Tänkte om du fortfarande har problem kanske detta hjälper dig, inte jättesnygg kod men tror du förstår.
Vet inte om du är tvungen att använda alla variabler i uppgiften eller inte, detta hjälper dig iaf att förstå vilka metoder du kan använda.

http://codepad.org/gYeAAtjE

Har du frågor så hör av dig

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770