skapa program med flödesshema

Permalänk
Medlem

skapa program med flödesshema

Detta flödesschema ska visa ett sätt att beräkna produkten av två icke negativa heltal x och Y genom att adera talet y, x gånger.

Om x=3 och Y= 4 så ska svaret bli 4+4+4

Hur ska jag fortsätta för att programmet ska fungera som det ska göra.

Antal < x <---om denna är falsk så: skriv ut svar
Antal < X om denna är sann så: öka svar med y, öka antal med 1. Börja sedan om
på steget Antal < x

int main()

{
int x;
int y;
int antal;
int svar;

cout << "skriv in det första numret:";
cin >> x;
cout << "skriv in det andra numret:";
cin >> y;
cout << endl << endl;

antal = 0;
svar = 0;

if (antal < x)

{ svar +y;
antal ++;
}

else

cout << "svar" << svar << endl;

return 0;

}

Permalänk
Hedersmedlem

Det låter som att du behöver en for-loop.

Permalänk
Medlem

Detta flödesschema ska visa ett sätt att beräkna produkten av två icke negativa heltal x och Y genom att adera talet y, x gånger. Om x=3 och Y= 4 så ska svaret bli 4+4+4. Hur ska jag fortsätta för att programmet ska fungera som det ska göra. Hur gör man en for loop. Hur ser den ut i detta flödesschema?

int main() { int x; int y; int antal; int svar; cout << "skriv in det första numret:"; cin >> x; cout << "skriv in det andra numret:"; cin >> y; antal = antal++; svar = svar+y; if (antal < x) { svar +y; antal ++; } else cout << "svar:" << svar +y << endl; return 0; }

Permalänk
Hedersmedlem

Det är en god idé att initiera variablerna som du gjorde förut (antal = 0, svar = 0). Sedan skulle du till exempel kunna byta ut

if(antal < x)

mot

while(antal <= x)

(och radera den efterföljande if-satsen.

svar + y;

bör också vara

svar = svar + y;

(eller svar += y;).

Permalänk
Medlem

Om mam skriver att x är 3 och y 4 så blir svaret blir 16. Men hur gör man om man att det ska stå 4+4+4

int main() { int x; int y; int antal; int svar; cout << "skriv in det första numret:"; cin >> x; cout << "skriv in det andra numret:"; cin >> y; cout << endl << endl; antal = 0; svar = 0; while(antal < x) { svar = svar +y; antal ++; } else { cout << "svar:" << svar +y << endl; } return 0; }

Permalänk
Hedersmedlem

Ändra

svar + y

till bara

svar

när du skriver ut svaret. För övrigt rekommenderas code-taggen när man skriver kod i forumet.

Permalänk
Medlem

Men hur gör jag så att det står svar: 4+4+4 istället för svar: 12

Permalänk
Hedersmedlem
Skrivet av strom63:

Men hur gör jag så att det står svar: 4+4+4 istället för svar: 12

Du skulle kunna skriva ut "+" och siffran i loopen (utan endl), eller också (lämpligen) bygger du upp en textsträng med hjälp av en std::stringstream och skriver sedan ut denna.

#include <sstream> int main() { int x; int y; int antal; int svar; std::stringstream ss; cout << "skriv in det första numret:"; cin >> x; cout << "skriv in det andra numret:"; cin >> y; cout << endl << endl; antal = 0; svar = 0; while(antal < x) { svar = svar +y; antal ++; ss << y << " + "; } ss << y; cout << "svar:" << ss.str() << " = " << svar << endl; return 0; }

Sedan får du fixa tlll specialfall som x, y = 0, 1, negativa tal och liknande.

Permalänk
Medlem

Var ska jag skriva "+" ? Har inte lärt mig att använda stringstream i kursen.

#include <iostream> using namespace std; int main() { int x; int y; int antal; int svar; cout << "skriv in det första numret:"; cin >> x; cout << "skriv in det andra numret:"; cin >> y; cout << endl << endl; antal = 0; svar = 0; while(antal < x) { svar = svar +y; antal ++; } cout << "svar:" << "y++" << endl; return 0; }

Permalänk
Hedersmedlem
Skrivet av strom63:

Var ska jag skriva "+" ? Har inte lärt mig att använda stringstream i kursen.

Testa till exempel att lägg till

cout << y << " + ";

under

antal ++;

.
Och använd som sagt code-taggar istället för fetstil. Och indentera koden.

Permalänk
Medlem

När man kör programmet så står det så här:

4+4+4+ svar: 12

Det ska ju stå svar: 4+4+4

int main() { int x; int y; int antal; int svar; cout << "skriv in det första numret:"; cin >> x; cout << "skriv in det andra numret:"; cin >> y; cout << endl << endl; antal = 0; svar = 0; while(antal < x) { svar = svar +y; antal ++; cout << y << "+"; } cout << "Svar:" << svar << endl; return 0; }

Permalänk
Hedersmedlem

Jo, du får som sagt fixa en del specialfall (men det är en trevlig övning).

Permalänk
Medlem

Men jag vet inte hur jag ska göra. Har prövat med en del saker. Men det blir inte rätt.

Permalänk
Hedersmedlem

Problemet är ju alltså att ett plustecken alltid skrivs ut efter y men att man inte vill ha det så efter det sista. Kan man (till exempel med variablerna antal och x) lista ut när beteendet skall ändras? Och kan man, till exempel med en if-sats modifiera koden ovan?

Permalänk
Medlem

Kan du inte visa hur det ska vara för att det ska bli rätt.

Permalänk
Hedersmedlem
Skrivet av strom63:

Kan du inte visa hur det ska vara för att det ska bli rätt.

Nej, forumet är inte till för att folk skall få sina skoluppgifter lösta. Men det går bra att fråga om hjälp om man kör fast (efter att ha försökt ordentligt).