Leuk ufo was ook begonnen, geen idee of die nog bezig is...quote:Op zondag 24 maart 2013 22:07 schreef robin007bond het volgende:
Ik ga toch een begin maken aan Accelerated C++.
Jullie zullen misschien nog van me horen hier.
quote:Op zondag 24 februari 2013 17:49 schreef ufopiloot12 het volgende:
[..]
Namespaces, ik moet dat even rephrasen. Er worden belangrijke dingen blijkbaar niet vertelt. Het is niet toereikend dus.
Ik ben de laatste tijd idd met wat andere dingen bezig geweest.quote:Op zondag 24 maart 2013 22:11 schreef t4rt4rus het volgende:
[..]
Leuk ufo was ook begonnen, geen idee of die nog bezig is...
[..]
Ik doe altijd "using std::cout" "using std::endl" etc.quote:Op zondag 24 februari 2013 17:01 schreef t4rt4rus het volgende:
Hier stukje over cplusplus.com
http://jcatki.no-ip.org/fncpp/cplusplus.com
Ohja en "using namespace std" vind niet iedereen leuk
(ik ook niet...)
Yey iemand die het snapt. :pquote:Op zondag 24 maart 2013 22:47 schreef robin007bond het volgende:
[..]
Ik doe altijd "using std::cout" "using std::endl" etc.
Als ik meerdere namespaces zou gebruiken en twee methoden hebben dezelfde naam, dan hang je al bijvoorbeeld.
nah, zo heel veel gebruik ik dat nou ook weer niet en dan type ik gewoon std::cout als ik hem nodig heb..quote:Op zondag 24 maart 2013 22:47 schreef robin007bond het volgende:
[..]
Ik doe altijd "using std::cout" "using std::endl" etc.
Als ik meerdere namespaces zou gebruiken en twee methoden hebben dezelfde naam, dan hang je al bijvoorbeeld.
Zelfde hier.quote:Op maandag 25 maart 2013 07:55 schreef netolk het volgende:
[..]
nah, zo heel veel gebruik ik dat nou ook weer niet en dan type ik gewoon std::cout als ik hem nodig heb..
en std::endl doe ik niet aan vind '\n' genoeg
| 1 2 3 4 5 6 7 8 9 10 | int main () { vector<string> words; ifstream in (" GetWords.cpp"); string word; while ( in >> word) words.push_back(word); for ( int i = 0; i < words.size(); i++) cout << words [i] << endl; } |
quote:Op maandag 25 maart 2013 14:02 schreef ufopiloot12 het volgende:
[ code verwijderd ]
Ik krijg hier de error: " comparison between signed and unsigned integer expressions" bij regel acht, maar ik weet niet echt waar ik de fout in ga. Waarschijnlijk bij words.size, maar hoe moet ik dat verhelpen?
| 1 | for (size_t i = 0; i < words.size(); ++i) |
| 1 2 | for (auto const &e : words) std::cout << e << std::endl; |
Bedankt!quote:Op maandag 25 maart 2013 15:02 schreef t4rt4rus het volgende:
[..]
[ code verwijderd ]
vector::size() returnt een size_t, dit is een unsigned integer type.
-edit-
En in het vervolg wanneer je van dit soort for loops doet,
gebruik altijd std::size_t.
Daarnaast kan je natuurlijk ook gewoon dit doen:
[ code verwijderd ]
Wat dat trouwens ook kan doen iterators gebruiken:quote:
| 1 2 | for (auto it = words.begin(); it != words.end(); ++it) std::cout << *it << '\n'; |
Hmm, dit is eigenlijk een stuk fijner te lezen. Veel mooier ook.quote:Op maandag 25 maart 2013 18:09 schreef t4rt4rus het volgende:
[..]
Wat dat trouwens ook kan doen iterators gebruiken:
[ code verwijderd ]
Dat is nog eens mooi gebruik van auto.quote:Op maandag 25 maart 2013 18:09 schreef t4rt4rus het volgende:
[..]
Wat dat trouwens ook kan doen iterators gebruiken:
[ code verwijderd ]
std::vector<std::string>::iterator is een beetje lang.quote:Op maandag 25 maart 2013 19:11 schreef trancethrust het volgende:
[..]
Dat is nog eens mooi gebruik van auto.
Exactemundo; dit vergroot de leesbaarheid behoorlijk. Voorheen was ik totaal niet overtuigd van het nut van auto.quote:Op maandag 25 maart 2013 20:01 schreef t4rt4rus het volgende:
[..]
std::vector<std::string>::iterator is een beetje lang.
auto
-edit-
words.cbegin() en words.cend() is hier misschien nog wel beter.
Krijg je altijd een const_iterator
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <iostream> int main(){ int grade; int gradeTotal = 0; int NumberOfPeople = 0; while(grade!=-1) { std::cout << "Enter a grade or enter -1 to calculate average grade"<< std::endl; std::cin>>grade; gradeTotal+= grade; NumberOfPeople++; } if(gradeTotal == 0){ std::cout <<" The sum of your grades is 0, that can't be right!"<< std::endl; std::cout <<" Enter a number"; std::cin>>grade; } std::cout<< "The average grade is: "<< gradeTotal/NumberOfPeople<<std::endl; return 0; } |
Nou...quote:Op vrijdag 29 maart 2013 10:55 schreef ufopiloot12 het volgende:
[ code verwijderd ]
Alles werkt prima
| 1 2 3 4 5 6 7 8 9 | ~$ ./grade Enter a grade or enter -1 to calculate average grade 1 Enter a grade or enter -1 to calculate average grade 9 Enter a grade or enter -1 to calculate average grade -1 The average grade is: 3 ~$ |
Ja ik heb wel wat zitten klooien toen ik dit op fok zette. Net deed hij het echt!quote:
Aha, bedankt!quote:Op vrijdag 29 maart 2013 11:24 schreef Tijn het volgende:
Het probleem is natuurlijk dat je de input "-1" ook meetelt in het berekenen van het gemiddelde.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> int main(){ int grade; int gradeTotal = 0; int NumberOfPeople = 0; while(grade!=-1) { std::cout << "Enter a grade or enter -1 to calculate average grade"<< std::endl; std::cin>>grade; gradeTotal += grade; NumberOfPeople++; } std::cout << "Your average grade is: "<<++gradeTotal/--NumberOfPeople<<std::endl; return 0; } |
Je kan bijvoorbeeld zoiets doen:quote:Op vrijdag 29 maart 2013 11:27 schreef ufopiloot12 het volgende:
[..]
Aha, bedankt!
Ik heb het nu zo opgelost:
[ code verwijderd ]
Weten jullie misschien een betere manier, want ik los het probleem hier niet ECHT mee op.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <iostream> #include <vector> double average(std::vector<size_t> const &vec) { size_t total = 0; for (auto &e : vec) total += e; return static_cast<double>(total) / vec.size(); } int main() { std::vector<size_t> grades; size_t grade; while (std::cin >> grade) grades.push_back(grade); std::cout << average(grades) << '\n'; } |
Double is idd een betere type. Ik heb nog niet over vectors gelezen, daar ga ik nog eens naar kijken.quote:Op vrijdag 29 maart 2013 12:42 schreef t4rt4rus het volgende:
[..]
Je kan bijvoorbeeld zoiets doen:
[ code verwijderd ]
De vector kan je er hier natuurlijk helemaal uit halen.quote:Op vrijdag 29 maart 2013 12:47 schreef ufopiloot12 het volgende:
[..]
Double is idd een betere type. Ik heb nog niet over vectors gelezen, daar ga ik nog eens naar kijken.
Bedankt!
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream> int main() { size_t num_grades = 0; size_t total = 0; size_t grade; while (std::cin >> grade) { total += grade; ++num_grades; } double average = static_cast<double>(total) / num_grades; std::cout << average << '\n'; } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream> int main() { size_t num_grades = 0; size_t total = 0; int grade; while (std::cin >> grade) { if (grade < 0) break; total += grade; ++num_grades; } double average = static_cast<double>(total) / num_grades; std::cout << average << '\n'; } |
Duidelijk. Ik had al in gedachten dat het ook met een if statement zou moeten kunnen, maar ik wist niet precies hoe.quote:Op vrijdag 29 maart 2013 13:00 schreef t4rt4rus het volgende:
[..]
De vector kan je er hier natuurlijk helemaal uit halen.
Maar was meer een voorbeeld dat je de getallen aan een functie geeft die je dan het gemiddelde geeft.
[ code verwijderd ]
-edit-
Als je wil dat hij bijvoorbeeld stopt bij een negatief getal, kan je dit doen:
[ code verwijderd ]
Ik denk dat je beter eerst goed kan leren hoe de if-statement werkt voordat je met loops aan de gang gaat.quote:Op vrijdag 29 maart 2013 13:06 schreef ufopiloot12 het volgende:
[..]
Duidelijk. Ik had al in gedachten dat het ook met een if statement zou moeten kunnen, maar ik wist niet precies hoe.
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |