Citat:
Ursprungligen postat av
MDCS
Jag antar att det finns fler tillvgagngsstt, men gr det att lsa p detta stt genom att "bdda in" uttrycket och multiplicera det med antal upprepningar?
Nej, repetera gr man med loopar (for, while och do-while) och de r statements, inte expressions, s man kan inte loopa bara en del av ett uttryck. Men man kan repetera
datat om man vill, t.ex. skapa en strng med x antal y-tecken med `string(x, y)` (eller om det var tvrtom).
Fr konditionella statements (if-else) finns det dremot en motsvarighet som r ett uttryck: ?:-operatorn. S man kan skriva...
Kod:
cout << (height < 1.5 ? "dvrg" : "mnniska") << endl;
...istllet fr...
Kod:
if (height < 1.5) {
cout << "dvrg";
} else {
cout << "mnniska";
}
cout << endl;
Antingen loopar du n antal `cout << '*';` som skriver ut en enda asterisk, och d behver du en ny loop inuti den andra, eller s kr du bara `cout << string('*', n)`. Det senare slsar lite p minne, men gr andra sidan bara ett output-anrop. Eftersom cout antagligen r buffrad, s sparar det nog inte ngon srskild tid, men hade det varit cerr kunde kanske strngskaparmetoden varit mycket snabbare.
Det finns fler trdar med samma uppgift, du kanske kan hitta ngon bra info i dem:
https://www.flashback.org/t1806434
https://www.flashback.org/t1501850
https://www.flashback.org/t1366651
https://www.flashback.org/t1090267