Hej, Lite psuedokod: Okej, If satsen ingår i loopen som skriver ut resultatet. If-satsen hindrarbokstäver som inte finns från att skrivas ut. >Jag har fått till uppgift att skriva in en mening och sen spara meningen i en vektor. Tack för hjälpen!! >jag undrar vad tecknen :: som används i koden gör. Aha,Vektorer
Jag har fått till uppgift att skriva in en mening och sen spara meningen i en vektor.
Sen ska jag räkna hur många gånger varje bokstav i alfabetet kommer upp och resultatet ska skrivas ut.
Jag har gjort om alla bokstäver till ascii form. Hur sparar jag det sen i en vektor, räkar hur många gånger varje bokstav var med i meningen?
Kan någon hjälpa?
/ Johanna, C++ rookie......Sv: Vektorer
vektor[255]
För varje bokstav x i din sträng{
vektor[ascii för bokstav x]++;
}
for (int i; i<=255;i++){
if (vektor[i]){
//Skriv ut: "Det finns" + vektor[i] +" antal av bokstaven" + omvandla i tll bokstav
}
}Sv:Vektorer
Men behövs det inte en if sats för varje bokstav då? Det verkar mycket, eller menade du nåt annat?Sv: Vektorer
Sv: Vektorer
Förstår inte vitsen med att spara meningen i en vektor. Borde väl fungera lika bra att ha den i sen sträng.
<code>
std::string mystring = "En mening med fem ord"
</code>
för att kopiera meningen till en vektor kan man göra så här:
<code>
std::vector<char> myvector(mystring.begin(), mystring.end());
</code>
>Sen ska jag räkna hur många gånger varje bokstav i alfabetet kommer upp
<code>
std::string alfabet("ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ");
std::vector<int> vec(alfabet.size(), 0);
for (std::string::iterator it = mystring.begin(); it != mystring.end(); ++it) {
std::string::size_type pos = alfabet.find(std::toupper(*it), std::locale()), 0);
if (pos != std::string::npos)
vec[pos] += 1;
}
</code>
> och resultatet ska skrivas ut.
<code>
for (int ii = 0; ii < alfabet.size(); ++ii)
if (vec[ii])
std::cout << "Bokstav " << alfabet[ii] << " förekommer " << vec[ii] << " gånger." << std::endl;
</code>Sv:Vektorer
Kom på att det är statistiken, dvs hur många gånger varje bokstav förekommer i meningen som ska sparas i vektorn, inte själva meningen.
Försöker köra programmet ovan gav, men det funkar inte.
Det här är kanske en dum fråga, men skit samma.... jag undrar vad tecknen :: som används i koden gör. Jag har aldrig använt dem innan.
Kan man slippa skriva ut std:: hela tiden?
Sen undrar jag hur jag gör med ditt program och använder ascii values i stället för att räkna upp alfabetet. Det kanske inte spelar nån roll, men jag bara undrar....Sv: Vektorer
De används för att specificera olika namnrymder. "std::" betyder att man skall använda namnet från standardbiblioteket.
Antag följande:
<code>
typedef int vector[10];
int main() {
vector x; // x är en array av integers
std::vector<int> y; // y är en std::vector
}
</code>
>Kan man slippa skriva ut std:: hela tiden?
Tja det kan man genom att skriva "using namespace std;" men varför vill du göra det? "std::" är ju en slags dokumentation som gör det lättare att förstå vad som händer. Orkar man inte skriva dokumentation är man illa ute.Sv:Vektorer
Det var det att jag hela tiden har använt "using namespace std;"
Nu kan jag alltså i stället skriva "std::"
Det var bara det jag undrade.
När jag kör programmet ovan, kan jag göra det i "int main()" med #include<iostream> , #include<string> och #include<vector>?