Module umgekehrt
-
modulo schrieb:
Versuche ich aber warum stützt es ab
#include <iostream>
using namespace std;int main ()
{
for (int x=0; x<=1000; x++)
cout << 6 % x;
}Weil im ersten Durchlauf durch 0 dividiert wird! Und ich hab dir das auch noch so gesagt...
Fang einfach bei 1 an, dann klappt es bestimmt.
Bei dir fehlt aber noch eine Abfrage, ob die Modulo-Operation einen bestimmten Rest ergibt (wolltest du ja ursprünglich haben).
-
Das funktioniert auch nicht
int main ()
{
for (int x=0; x<=1000; x++)
{
if ( (6 % x) = 2 ) cout << 6 % x;
}
}
error C2106: '=' : left operand must be l-value
-
modulo schrieb:
Das funktioniert auch nicht
int main ()
{
for (int x=0; x<=1000; x++)
{
if ( (6 % x) = 2 ) cout << 6 % x;
}
}
error C2106: '=' : left operand must be l-valueFehler 1 habe ich schon geasgt (Division durch 0), Fehler 2 ist, dass du "=" und "==" verwechselst. "=" Ist der Zuweisungsoperator. Damit weist du einer Variablen einen Wert zu. "==" ist der Vergleichsoperator, mit dem du 2 Werte auf Gleichheit prüfen kannst (den wolltest du eigentlich verwenden).
-
Juchhhhuuuu es geht
Aber ohne Schleife geht es nicht oder?int main ()
{
for (int x=1; x<=1000; x++)
{
if ( (6 % x) == 2 ) cout << x;
}
}
-
Naja das einfachste um 6%x == 2 zu lösen, ist natürlich einfach 6-2 zu rechnen...
-
Mit grösseren Werten funktioniert es nicht
int main ()
{
for (int x=1; x<=1000; x++)
{
if ( (500 % x) == 2 ) cout << x;
}
}3683166249498
Warum kommt so eine grosse Zahl raus
-
modulo schrieb:
Juchhhhuuuu es geht
Aber ohne Schleife geht es nicht oder?int main ()
{
for (int x=1; x<=1000; x++)
{
if ( (6 % x) == 2 ) cout << x;
}
}Du willst doch eine Aufgabe mehrfach erledigen. Dafür nimmt man halt meistens Schleifen. es gibt noch andere Möglichkeiten, Aufgaben zu wiederholen (goto, Rekursion), aber hier ist der für dich beste Weg sicher eine for-Schleife.
Eine gute Übung wäre wohl, das Ganze jetzt in eine Funktion zu packen, wie ich anfangs geschrieben hatte. Die nimmt dann 2 Parameter (z.B. 6 und 2). Eine Funktion zu bilden schafft Übersicht und Struktur im Code, außerdem kann sie immer wieder verwendet werden. Wenn du den Vorgang für 2 Argumentenpaare durchführen willst, musst du nicht den vorhandenen Code nochmal drunterkopieren, sondern rufst einfach die Funktion mit anderen Parametern auf.
P.S.: Schließe deinen Code bitte in Zukunft in [cpp] und [/cpp] ein, damit er schön formatiert und besser lesbar ist. So wie hier:
int main() { bla(); if(b) { blub(); } }
Dann bleibt auch die Einrückung erhalten (die du hoffentlich anwendest).
Das kannst du auch mit dem C/C++-Button unter den Smileys machen.
-
Man braucht die Schleife nur von 3 bis 6 laufen lassen. Allgemein: Will man a%x=b lösen, muss man nur von b+1 bis a durchsuchen.
-
modulo schrieb:
Mit grösseren Werten funktioniert es nicht
int main ()
{
for (int x=1; x<=1000; x++)
{
if ( (500 % x) == 2 ) cout << x;
}
}3683166249498
Warum kommt so eine grosse Zahl raus
Das Ergebnis kann doch nicht für x herausgekommen sein, wenn deiner Schleife von 1 bis 1000 läuft...
Ansonsten einfach mal Bashars Tipp berücksichtigen.
-
modulo schrieb:
3683166249498
Warum kommt so eine grosse Zahl rausWeil die Ausgabe keine Trennzeichen vorgesehen hat:
3683166249498 3 6 83 166 249 498
Wie man Trennzeichen in die Ausgabe kriegt, weiß ich leider nicht. Mein Kompiler kennt kein cout.