Hej. Är nyregistrerad medlem samt nybörjar på C++. Har köpt en bok av Stephen Prata och försöker lösa uppgifterna i slutet av varje kapitel men har kört fast. Hoppas någon kan hjälpa till. Övningen jag kört fast med är typ en följduppgift från uppgiften innan så för att ni skall förstå så skriver jag in den uppgiften också: Är det månadsnamnen som skrivs ut tokigt? Du har nämligen gjort fel i den arrayen: Tack. Nu skriver den ut som jag hade tänkt att den skulle göra när jag ville testa ifall for-slingorna skrev ut rätt fast det är fortfarande inte rätt enligt uppgiften. Tror inte jag hajar problemet... Jag tycker bara att det är djupt tragiskt att Prata påstår sig skriva en bok där han lär ut C++ och visar sen läsarna hur dom ska sitta och manipulera char- och int-arrayer. Ja, visserligen bygger C++ till större delen på en högre abstraktion, men vet man inte hur grejer är uppbyggda så är det svårt att komma vidare. Tack allihopa för hjälpen. Jag tycker att uppgiften är löst, tack vare er hjälp. Tyvärr så kommer jag nog återkomma med fler problem. Jag delar inte kritiken mot Prata lika fullt som hiflyer. Jo tack, jag är ganska medveten om att man då och då blir tvungen att anpassa sig till annat än C++ standarden. Jag utvecklar för tillfället ett spel för SymbianOS och där finns inte std alls! Men jag tycker iaf att man bör BÖRJA med att använda sig av de verktyg std ger en. När man sen blir mer avancerad kanske man intresserar sig för HUR std är skrivet eller så blir man tvungen att lära sig andra tekniker. Men det är inte intressant i början. Då är det viktigaste att komma igång med OOP som är grunden i C++. Jo, det kan stämma, jag hade själv svårt att gå över helt och hållet. Men i fallet arrayer tycker jag nog det ändå är så fundamentalt och så enkelt att det inte kräver speciellt mycket av någon som skall lära sig det. Jag menar: var ska man dra gränsen, ska man inte lära sig "vanliga" variabeltyper heller?C++ uppgift
Du säljer handboken för "galningar". Skriv ett program som låter dig skriva in ett års månatliga försäljningstal (i antal böcker, inte i pengar). Programmet bör använda en slinga för att fråga efter värdet för varje månad med en char-vektor som intitieras till månadernas namn och en int-vektor för att lagra försäljningssiffrorna. Sedan bör programmet räkna fram totalsumman för vektorn och presentera årets sammanlagda försäljning.
Min kod (som jag tror är rätt, resultet av koden funkar iafl):
#include <iostream.h>
using namespace std;
const int months = 12;
int main()
{
char month[months][20] =
{
"januari",
"februari",
"mars",
"april",
"maj",
"juni",
"juli",
"augusti",
"september",
"oktober",
"november",
"december"
};
int fsg[months];
for (int i = 0; i < months; i++)
{
cout << "month " << month[i] << "s försäljning: ";
cin >> fsg[i];
fsg[months] = fsg[i]+i;
}
cout << "Den totala försäljningen uppgick till:" << fsg[12] << " böcker\n";
int a;
cin >> a;
return 0;
Nu till "följdfrågan"...
Gör om övning ovan men använd en tvådimensionell vektor för att lagra och hantera tre års månatliga säljsiffror. Rapportera varje enskilt års försäljning samt den totala summan för alla tre åren.
Jag har i koden nedan bara fyllt i siffror som skall vara resultat för att se ifall slingen skriver ut rätt, vilken den inte gör. Snarare helt galet. Jag hoppas någon orkar ta sig tid och kanske ändra min kod lite så att det blir rätt..
#include <iostream.h>
using namespace std;
const int months = 12;
const int years = 3;
int main()
{
char *month[months][20] =
{
"januari",
"februari",
"mars",
"april",
"maj",
"juni",
"juli",
"augusti",
"september",
"oktober",
"november",
"december"
};
int res[years][months] =
{
{1,1,1,1,1,1,1,1,1,1,1,1},
{2,2,2,2,2,2,2,2,2,2,2,2},
{3,3,3,3,3,3,3,3,3,3,3,3},
};
for (int m = 0; m < months; m++)
{
cout << month[m] << "s försäljning:\t ";
for (int y = 0; y < years; y++)
cout << res[y][m] << "\t";
cout << "\n";
}
int a;
cin >> a;
return 0;
}
Mvh
NiklasSv: C++ uppgift
<code>
char *month[months][20] =
{
"januari",
"februari",
"mars",
"april",
"maj",
"juni",
"juli",
"augusti",
"september",
"oktober",
"november",
"december"
};
</code>
Antingen skall du ha
<code>
char month[months][20] =
{
"januari",
"februari",
"mars",
"april",
"maj",
"juni",
"juli",
"augusti",
"september",
"oktober",
"november",
"december"
};
</code>
eller
<code>
char *month[months] =
{
"januari",
"februari",
"mars",
"april",
"maj",
"juni",
"juli",
"augusti",
"september",
"oktober",
"november",
"december"
};
</code>Sv: C++ uppgift
Varje enskilt år skall rapporteras samt den totala summan för alla tre åren. Sv: C++ uppgift
Kan du inte räkna ut summan?
Det enklaste är väl om du gör typ så här:
int ysum[years]={0,0,0};
int totsum=0;
for (int y = 0; y < years; y++)
{
for (int m = 0; m < months; m++)
ysum[y]+=res[y][m];
cout << "Resultat år " << y << ": " << ysum[y] << endl;
totsum+=ysum[y];
}
cout << "Totalt: " << totsum;Sv: C++ uppgift
Skrämmande!
Hela meningen med C++ är ju användandet av klasser och standardbiliotek så att man slipper sånt!Sv: C++ uppgift
Man kan ju bara tänka på att C++ också innebär ett stort användande av fristående bibliotek - saker man inte har kontroll över - och dessa kan använda arrayer.
Då tycker jag det är värre med böcker som lär ut att man ska använda #define's. Finns nog inget värre...Sv: C++ uppgift
Såg att ni var lite kritiska till prata. Jag är så pass färsk så att jag inte kan uttala mig om boken är bra i jämförelse med andra böcker men jag tycker ändå boken har varit rätt pedagogisk och lagom lättförstådd. Har tillgång till boken "lär dig C++ på 3 veckor" och får väl kanske jämnföra dessa två emellan. Ha det bra allihopa.
På återhörande
NiklasSv: C++ uppgift
En tumregel du kan använda är:
Om skribenten använder t.ex. <iostream.h> istället för <iostream> så är det antingen en för gammal bok eller en oerhört dålig bok.
Om skribenten använder <conio.h> så är det en bok som använder något som är icke-standard. Om du använder något sånt kan du aldrig förvänta dig att det du skriver kommer kunna användas någon annanstans än där du skriver det.
Om skribenten använder #define för att göra makron eller konstanter är det en dålig eller gammal bok. För en normal användare så behövs #define bara om man vill göra villkorlig inkludering, typ
#ifndef MIN_H_FIL
#define MIN_H_FIL
//...
#endif
Allt annat kan och bör göras via nyare konstruktioner.Sv: C++ uppgift
Jag tror inte alls på principen "C++ är en utvidgning av C så vi börjar med att lära oss C". Jag tror att det är svårare att anpassa sig till OOP om man börjar med att lära sig ren C.Sv: C++ uppgift