Brauche dringend Hilfe
-
Sorry für die Rechtschreibfehler!
-
Bauer Horst schrieb:
Sorry für die Rechtschreibfehler!
Es ging ihm nicht um die Rechtschreibung oder Grammatik, sondern darum, das du deinen bisherigen Versuch posten sollst, um dir Tipps zu geben. Dabei lernst du weitaus mehr, als wenn dir jemand eine fertige Lösung präsentiert.
-
Mein Plan war es das erst einmal die Zahlen einlese! Nur das ist schon meine erste Frage wie ich es am besten mache?
Dann wollte ich eine schleife laufen lassen die solange meine Werte in dem Breich leigen wenn nich will ich das die eingabe beendet wird.
Dann wollt ich das die werte in die Intervalle eingeteilt werden.
Am schluss soll die Ausgabe in vektorform erfolgen.Ist die reihenfolge erstmal grundsätzlich richtig oder würdet ihr es anders machen?
-
Erst einmal danke das ihr euch so schnell meldet!
Ich komm da ja kaum mit dem schreiben nach!
-
Zahlen kannst du in einem std::vector<int> abspeichern. Damit kannst du ja schon mal anfangen zu experimentieren. Genügend Material gibts mit Google zu finden.
-
Oder hat einer von euch nen guten Tip wo ein Anfänger wie ich die Grundbegriffe und Codes schnell mal nachlesen kann?
-
Ja das Problem bei den Antworten aus google ist für mich das ich nur schwer das was für mich interessant wäre aus den Zusammenhang zu finden?
-
Du sitzt schon tagelang an dem Problem? Was hast du denn die ganze Zeit gemacht? Zeig doch mal den code den du schon geschrieben hast.
Bauer Horst schrieb:
Oder hat einer von euch nen guten Tip wo ein Anfänger wie ich die Grundbegriffe und Codes schnell mal nachlesen kann?
Normalerweise wäre doch der erste Schritt sich ein gutes Buch zu kaufen oder auszuleihen und dieses zu lesen.

C++ lernt man nicht mal eben so durch ein wenig googeln oder der Lektüre einiger kleinen Tutorials.
-
Meine ergebnisse halten sich in grenzen! Ich habe fast die ganze Zeit nur damit verbracht was man wie am besten machen kann
-
// Zählprogramm -1-.cpp: Hauptprojektdatei.
#include "stdafx.h"
#include <stdio.h>void main(void)
{
// Festlegen der Variablen
int i
int werte
// Programm ablauf// Eingabe der Zahlen
printf("Geben sie die Zahlen ein!");
scanf("%f", &i);
//Wenn die Zahlen im Bereiches von -99 bis +100 sind dann Werte aufnehmen
while (werte < 20; werte > 1)// Wen die Eigabe außerhalb liegt dann Eingabe Beenden
//Einteilen in die 5 Intervalle
//Zur Speicherung der Intervalle Vektor verwenden
}
-
Ich mein von 1 bis 20
-
Nichts für ungut, aber da stimmt so ziemlich garnichts

Ausserdem scheinst du C programmieren zu wollen, und nicht C++.Als Anfänger empfiehlt es sich erstmal ganz simple Programme zu schreiben, beispielsweise Hello World (natürlich selber schreiben, nicht einfach c&p).
Danach fängst du an Zahlen einzulesen, und diese wieder auszugeben.
Danach liest du mehrere Zahlen ein (in einer Schleife), addierst sie vlt. noch und gibst dann die Summe aus.
etc.etc.Fang nicht gleich mit so "schweren" Aufgaben an, wenn du wirklich gerade erst angefangen hast zu programmieren. Das frustriert erstens, und zweitens lernst du dabei nichts, wenn dir jetzt hier jemand die Lösung präsentiert.
-
Ja seh ich ein, aber ich muss auch sagen das mein dargestellter Code nur meinen geplanten aufbau beschreiben soll. Einige Sachen habe ich auch vorher rausgeschmissen
-
Trotzdem wäre ich dankbar da ich es ja selber nicht hin bekomme und es sich nicht um eine "unmögliche" Aufgabe handelt wenn mir jemand den Code hochladen könnte. Denn ich würde einfach gerne mal sehen wie man dieses Problem hätte lösen können.
Da ich wirklich versucht habe etwas "vernünftiges" auf die beine zu stellen. Einfachere Aufgaben hab ich schon gemacht und jetzt wollt ich es mal mit einer kombination aus den Aufgaben versuchen, aber.....Gruß Horst
-
Eine mögliche Lösung wäre:
#include <iostream> #include <vector> #include <algorithm> #include <iterator> int main( ) { std::vector<unsigned int> rangecount(5); unsigned int value; while (std::cin>>value && value>=1 && value<=20) ++rangecount[(value-1)/4]; std::copy(rangecount.begin(),rangecount.end(),std::ostream_iterator<unsigned int>(std::cout,"\n")); return 0; }Es werden nur Zahlen des Intervalls [1,20] akzeptiert, anderenfalls wird die Eingabe beendet.
-
xD es war klar dass früher oder später eine lösung kommt die mit stl und templates hantiert und die man als anfänger nicht verstehen kann...*freu*
coole sache@bauer horst:
da hast du dein lösung, zufrieden?
-
Eigentlich geht es mehr darum, dass kein Lehrer einem Schüler abkaufen würde, dass er eine solche Lösung selbst geschrieben habe, wenn dieser sie nicht im Detail erklären kann. Aber ich denke, das können wir besser: Lösungen, bei denen es unglaubwürdig ist, dass sie vom Schüler geschrieben wurden, die aber außerdem dermaßen absurd sind, dass sie niemand vor einer Lobotomie in Produktionscode verwenden würde. Beispiel:
#include <algorithm> #include <iostream> #include <iterator> #include <stdexcept> #include <vector> template<typename T> class range_counter { public: range_counter(std::vector<T> &counters, T min, T max, T step) : min_(min), max_(max), step_(step), counters_(counters) { if(min > max) throw std::out_of_range("min > max"); counters_.clear(); counters_.resize(typename std::vector<T>::size_type((max_ - min_) / step_ + 1)); } bool operator()(T const &x) { if(x < min_ || x > max_) return true; ++counters_[(x - min_) / step_]; return false; } private: T min_, max_, step_; std::vector<T> &counters_; }; int main() { std::vector<unsigned> counters; range_counter<unsigned> rcn(counters, 1, 20, 4); std::find_if(std::istream_iterator<unsigned>(std::cin), std::istream_iterator<unsigned>(), rcn); std::copy(counters.begin(), counters.end (), std::ostream_iterator<unsigned>(std::cout, "\n")); }Schauderhaft, nicht wahr?
Auf die Weise gibt es nicht nur für die Hausaufgabe ein "nicht abgegeben", sondern mit etwas Glück auch ein "da haben sie dich aber auf den Arm genommen". Vielleicht nimmt die Hausaufgabenbettelei dann etwas geringere Ausmaße an.
-
Danke erstmal an alle! Aber ich glaube ich habe selber einen Weg gefunden!? Mal sehen!
Die Zweite Lösung ist für mich jedenfalls eher nachvollziehbar.
Schüler-Lehrer? Hausaufgabenbettelei?
-
#include <iostream> #include <vector> void ausgeben(int A, int E, std::vector<int> ¶) { //intervall for(int i = 0; i < para.size(); ++i) { if(para[i] >= A && para[i] <= E) { std::cout << para[i] << " "; } } std::cout << "\n"; } int main() { using namespace std; vector<int> zahl; for(int i = 0;; ++i) { zahl.resize(i+1); cin >> zahl[i]; if(zahl[i] < 0 || zahl[i] > 20) { cerr << "Zahl nicht im Bereich!\n"; zahl.erase(zahl.end()-1); } if(zahl[i] == 0) break; } cout << "1-5:\n"; ausgeben(0, 5, zahl); cout << "6-10:\n"; ausgeben(6, 10, zahl); cout << "11-15:\n"; ausgeben(11, 15, zahl); cout << "16-20:\n"; ausgeben(16, 20, zahl); }
-
Die Lösung ist nicht nur unschön, sondern wirft auch noch die ganze Didaktik des Threads über den Haufen.
Hättest du den Thread oder die Foren FAQ wenigstens überflogen, dann wäre dir aufgefallen, dass fertige Lösungen zu Problemen, die wie Hausaufgaben aussehen, nicht gern gesehen werden.