Hjälp med en flexibel funktion- C++

Permalänk
Medlem

Hjälp med en flexibel funktion- C++

Hej där!

Sitter såhär juletid och försöker lära mig lite basic saker i C++ och har fastnat på en grej jag håller på med.

Jag har tänkt att programmet ska skriva ut en eller flera tomtar beroende på vad användaren skriver in. Det har jag löst.

Men nu är det så att jag tänkte göra programmet mer flexibelt så man kan lägga till ett skägg på tomten, där man får skriva in hur lång och hur bredd skägget ska vara, vilket jag inte har listat ut hur jag ska göra.

Koden ser än så länge ut såhär. Och det jag inte får att fungera är att den skriver "*" på bredden och att varje tomte inte får skägg utan bara den sista.

Uppskattar verkligen lite tips/hjälp

#include "stdafx.h" #include <iostream> using namespace std; void tomte(int antaltomtar, int skagglangd, int skaggbredd) { int a= 0; while(a++ < antaltomtar) { cout << " ***" << endl; cout << " *****" << endl; cout << " *******" << endl; cout << "*********" << endl; cout << " * * " << endl; cout << " *** " << endl; cout << " ******* " << endl << endl << endl; } int b =0; int c = 0; while( b++ < skagglangd) { while(c++ < skaggbredd); } cout << "*"; { cout << endl; c=0; } } int main() { int i = 0; int langd = 0; int bredd = 0; cout <<" Skriv in skäggets längd" << endl; cin >> langd; cout << "Skriv in skäggets bredd" << endl; cin >> bredd; cout <<" Skriv in antal tomtar" << endl; cin >> i; tomte(i, langd, bredd); return 0; }

Denna kod har även sett ur såhär(Kolla längst ned)
|
v

while( b++ < skagglangd) { while(c++ < skaggbredd); } cout << "*"; { cout << endl; c=0; }

while( b++ < skagglangd) { cout << "*" << endl; while(c++ < skaggbredd) cout << "*" << endl; cout << endl; }

Visa signatur

Iphone 11 pro 256GB
Ipad mini 4 16GB
Macbook Pro 13 Touch Bar 256GB

Permalänk
Medlem

Testa lägga in loopen
while( b++ < skagglangd)...
inom den första while-loopen (while(a++ < antaltomtar)) så borde den skriva ut skägget för varje tomte istället för bara den sista.

while(c++ < skaggbredd);
Avslutar du inte while-loopen utan att göra något? Testa lägga till en cout inom måsvingar.

Permalänk
Medlem
Skrivet av prod01:

Testa lägga in loopen
while( b++ < skagglangd)...
inom den första while-loopen (while(a++ < antaltomtar)) så borde den skriva ut skägget för varje tomte istället för bara den sista.

while(c++ < skaggbredd);
Avslutar du inte while-loopen utan att göra något? Testa lägga till en cout inom måsvingar.

Fungerar tyvärr inte, nu skriver den bara ut på första tomten...

Tanken var att den skulle skriva ut först på bredden och sedan längden...

Men med denna kod så skriver den istället ut på längden på första tomten, men fortfarande ingen på bredden.

while(a++ < antaltomtar) { cout << " ***" << endl; cout << " *****" << endl; cout << " *******" << endl; cout << "*********" << endl; cout << " * * " << endl; cout << " *** " << endl; cout << " ******* " << endl << endl << endl; while( b++ < skagglangd) cout << "*" << endl; } while(c++ < skaggbredd); { cout << "*"; c=0; }

Visa signatur

Iphone 11 pro 256GB
Ipad mini 4 16GB
Macbook Pro 13 Touch Bar 256GB

Permalänk
Medlem

Det blir lättare om du delar upp det i flera funktioner. Om du skapar en funktion för huvud och en för skägg räcker det med denna koden i tomte:

void santa(int n, int beardHeight, int beardLength){ while(n--) { head(); beard(beardHeight, beardLength); } }

Permalänk
Medlem
Skrivet av xilli:

Det blir lättare om du delar upp det i flera funktioner. Om du skapar en funktion för huvud och en för skägg räcker det med denna koden i tomte:

void santa(int n, int beardHeight, int beardLength){ while(n--) { head(); beard(beardHeight, beardLength); } }

Men då måste jag skapa övrig kod i main funktionen, vilket jag inte hade tänkt från början...

Visa signatur

Iphone 11 pro 256GB
Ipad mini 4 16GB
Macbook Pro 13 Touch Bar 256GB