|
You last visited: Today at 10:58
Advertisement
for-Funktion schaltet nicht ein
Discussion on for-Funktion schaltet nicht ein within the C/C++ forum part of the Coders Den category.
07/17/2015, 16:03
|
#1
|
elite*gold: 0
Join Date: Mar 2010
Posts: 6,979
Received Thanks: 1,590
|
for-Funktion schaltet nicht ein
Hey,
ich bin momentan dabei, Aufgabe 3.20 im C++ Primer zu lösen.
Dabei soll ich eine Reihe von Ganzzahlen in einen Vector lesen und dann die Summe mit den angrenzenden Paaren berechnen.
Dafür habe ich diesen Code hier geschrieben:
Code:
#include <iostream>
#include <vector>
#include <string>
using std::vector;
using std::string;
int main()
{
vector<string::size_type> storage;
int stor;
while (std::cin >> stor)
storage.push_back(stor);
for (unsigned i = 0; i == storage.size() - 1; ++i)
{
int num1(0), num2(0), num3(0);
for (int &c : storage[i])
num1 += c;
if (i != 0)
{
for (int &c : storage[i - 1])
num3 += c;
}
if (i != storage.size() - 1)
{
for (int &c : storage[i + 1])
num2 += c;
}
std::cout << "Sum is " << num1 + num2 + num3 << std::endl;
}
system("Pause");
return 0;
}
Allerdings setzt die for-Funktion nie ein und weiß leider auch nicht woran das liegt. :X
Könnte mir jemand bei diesem Problem behilflich sein?
Schonmal danke im Voraus!
Mit freundlichen Grüßen,
Katzenstreu
|
|
|
07/17/2015, 16:05
|
#2
|
elite*gold: 74
Join Date: Oct 2008
Posts: 619
Received Thanks: 288
|
Die Bedingung ist nur erfüllt wenn storage.size() - 1 = 0 ist, soll das so sein?
for (unsigned i = 0; i <= storage.size() - 1; ++i)
würde für mich mehr Sinn ergeben
|
|
|
07/17/2015, 16:21
|
#3
|
elite*gold: 0
Join Date: Mar 2010
Posts: 6,979
Received Thanks: 1,590
|
Quote:
Originally Posted by Cr4nkSt4r
for (unsigned i = 0; i <= storage.size() - 1; ++i)
würde für mich mehr Sinn ergeben
|
Ahh, da habe ich den zweiten Reiter so behandelt, als würde der for abgebrochen werden, wenn die Bedingung erfüllt wird... :X Danke!
Hätte jetzt aber ein neues Problem, und zwar kriege ich hier:
Code:
for (int &c : storage[i])
num1 += c;
diesen Fehler: "no callable 'begin' function found for type 'unsigned int'"
Hättest du da auch eine Idee?
|
|
|
07/17/2015, 16:54
|
#4
|
elite*gold: 0
Join Date: Jun 2010
Posts: 13,410
Received Thanks: 2,856
|
Quote:
Originally Posted by Katzenstreu
Ahh, da habe ich den zweiten Reiter so behandelt, als würde der for abgebrochen werden, wenn die Bedingung erfüllt wird... :X Danke!
Hätte jetzt aber ein neues Problem, und zwar kriege ich hier:
Code:
for (int &c : storage[i])
num1 += c;
diesen Fehler: "no callable 'begin' function found for type 'unsigned int'"
Hättest du da auch eine Idee?
|
Bist du dir sicher, dass die Referenz C den richtigen Datentypen hat? Du kannst es ja mal mit auto versuchen. Hier ist übrigens keine Referenz angebracht. Wieso nutzt du einen Index/Subscript Operator für einen Iterator?
|
|
|
07/17/2015, 17:56
|
#5
|
elite*gold: 0
Join Date: Mar 2010
Posts: 6,979
Received Thanks: 1,590
|
Quote:
Originally Posted by Rouvesta
Bist du dir sicher, dass die Referenz C den richtigen Datentypen hat? Du kannst es ja mal mit auto versuchen. Hier ist übrigens keine Referenz angebracht. Wieso nutzt du einen Index/Subscript Operator für einen Iterator?
|
Sollte ja eigentlich, schließlich lässt der string::type_ref Typ nur Zahlen zu und es werden ja nur einzelne Zahlen ausgelesen. Habe es zur Sicherheit nochmals getestet, scheint auch nicht zu funktionieren. :X
Wieso denn keine Referenz? Ich will ja nur den einzelnen Buchstaben auslesen. Was wäre denn angebrachter?
Weil ich einzelne Zahlen auslesen will. Schau mal in den ersten Post, dort ist der Code in der Gesamtheit zu sehen.
|
|
|
07/17/2015, 18:02
|
#6
|
elite*gold: 0
Join Date: Jun 2010
Posts: 13,410
Received Thanks: 2,856
|
In einem range for nutzt du aber einen Iterator und dementsprechend ist der Index unangebracht. Eine Referenz wäre nützlich um den Wert von C zu verändern, das tust du aber gar nicht.
|
|
|
07/17/2015, 19:04
|
#7
|
elite*gold: 0
Join Date: Mar 2010
Posts: 6,979
Received Thanks: 1,590
|
Quote:
Originally Posted by Rouvesta
In einem range for nutzt du aber einen Iterator und dementsprechend ist der Index unangebracht. Eine Referenz wäre nützlich um den Wert von C zu verändern, das tust du aber gar nicht.
|
Der Index ist dort schon angebracht, schließlich will ich nicht alle Vektoren lesen sondern nur einen Wert davon.
Aber was soll ich denn stattdessen verwenden?
Ich will ja schließlich nur einen Wert ablesen, und ein neues Objekt dafür zu erschaffen ist ja nicht wirklich nötig.
€dit: bzw. nein, der Index ist nicht nötig, habe die Aufgabe falsch verstanden. Bitte einfach wegdenken. Naja, der ganze Code ist somit nicht wirklich interessant. Trotzdem würde ich gerne meine Fehler erfahren. :x
|
|
|
07/17/2015, 19:12
|
#8
|
elite*gold: 0
Join Date: Jun 2010
Posts: 13,410
Received Thanks: 2,856
|
Quote:
|
Originally Posted by snow
Code:
for (unsigned int i = 1; i != storage.size() - 2; ++i)
{
std::cout << (storage[i - 1] + storage[i] + storage[i + 1]) << std::endl;
}
|
Wäre eine mögliche Lösung, da gibt er es ja von jedem aus.
Du greifst mit deinem Index auf ein Element des vectors storages zu. Dieses ist ein primitiver Datentyp und über einen solchen(einzelnen) kannst du ja schlecht drüber iterieren. Ein primitiver Datentyp hat ja schließlich keine Iterator-Memberfunktion "begin()".
e: der Code war ein Einzeiler, natürlich darf man Edge-Cases nicht vergessen usw.
|
|
|
07/17/2015, 22:55
|
#9
|
elite*gold: 0
Join Date: Mar 2010
Posts: 6,979
Received Thanks: 1,590
|
Quote:
Originally Posted by Rouvesta
Wäre eine mögliche Lösung, da gibt er es ja von jedem aus.
Du greifst mit deinem Index auf ein Element des vectors storages zu. Dieses ist ein primitiver Datentyp und über einen solchen(einzelnen) kannst du ja schlecht drüber iterieren. Ein primitiver Datentyp hat ja schließlich keine Iterator-Memberfunktion "begin()".
e: der Code war ein Einzeiler, natürlich darf man Edge-Cases nicht vergessen usw.
|
Hätte ich im Buch eine Seite weiter geblättert, hätte ich mir die Frage auch sparen können. :S
Danke euch beiden für die Hilfe!
|
|
|
 |
Similar Threads
|
PC schaltet sich nicht aus.
03/07/2015 - Technical Support - 14 Replies
Hi Leute :)
Hab folgendes Problem.
Wenn ich meinen Computer herunterfahre, fährt er auch runter ganz normal. Aber der Rechner läuft weiter und am Bildschirm steht dann "no Signal" das macht er aber nur wenn er länger läuft.
Wenn ich den PC gleich nacht dem hochfahren runterfahre, schaltet er sich auch ab.
Ich hoffe ihr könnt mir helfen :)
|
League of Legends - Riot Games schaltet Public-Chat-Funktion ab
07/06/2014 - User Submitted News - 2 Replies
https://signup.oce.leagueoflegends.com/bundles/rio tsignup/img/signup_logo2_clean.png?v1
Riot Games hat die Public-Chat-Rooms in seinem Multiplayer-Titel League of Legends abgeschaltet. Grund dafür sei die aktuelle Flut an Spammern, Scammern und Verkäufern von In-Game-Währung. Das Feature soll nun grundlegend überarbeitet werden.
Bei Riot Games hat man offenbar die Nase voll von Scammern, Spammern und Verkäufern der In-Game-Währung Riot Points: Wie das Entwicklerstudio in einer...
|
Pc schaltet sich nicht mehr ein
09/16/2013 - Hardware Discussions / Questions - 2 Replies
Hab meinen alten PC(die teile etc) in ein neues Gehäuse einbauen + Neues Netzteil + Neue Graka.
Ich glaube es scheitert bei der Verkabelung kenn mich da nich so aus hab das Sharkoon t28( es sind die Gehäuselüfter nich angeschlossen weiss nicht wohin mit den 3-6 4Pin Stecker) oder ich weiß nicht wohin ich die HDD LED power switch etc einstecken soll, < Hab gegoogelt muss an nen Fronpanel stecker nur meiner sieht nicht so aus wie bei den Bild hier...
|
Mainboard Schaltet nicht aus.
01/29/2013 - Technical Support - 11 Replies
Guten Tag,
Ich habe seid dem ich das mainboard von meinen Vater bekommen hab,
Folgendes Problem: :mad:
Wenn ich Meinen Pc Herunterfahre Bleibt das mainboard Dennoch an und muss es dann mit gedrückthalten von dem "anmach" Knopf ausschalten.
Wie kann ich es Reparieren?
Hoffe Mir kann jemand helfen ;)
|
Rechner schaltet sich nicht ein?!
11/05/2011 - Technical Support - 12 Replies
Hallo com,
heute wollte ich meinen Rechner einschalten aber es passierte gar nichts. Gestern hat er noch prima funktioniert. Meine Mutter hat abgestaubt und hat dann ein bisschen drauf gehauen. Aber glaub nicht das es damit zu tun hat. Und drinnen leuchtet ein grünes Licht, also glaub ich nicht das es etwas mit der Stromversorgung zu tun hat. Wollte fragen ob ich etwas machen kann weil nämlich meine Garantie schon abgelaufen ist?
Und wie viel würde das kosten?
Der Rechner ist 3-4 Jahre alt....
|
All times are GMT +1. The time now is 10:59.
|
|