|
You last visited: Today at 02:50
Advertisement
[Frage] Modulo
Discussion on [Frage] Modulo within the C/C++ forum part of the Coders Den category.
03/04/2014, 12:35
|
#1
|
elite*gold: 312
Join Date: May 2013
Posts: 449
Received Thanks: 45
|
[Frage] Modulo
Heey,
ich habe eine Frage zu folgendem Beispiel, nämlich wie erkennt Modulo die geraden Zahlen?
Was soll das Programm machen?
Das Programm soll einen Countdown darstellen, und wenn die Hälfte erreicht ist eine Meldung ausgeben.
Der Countdown soll nur ungerade Zahlen annehmen, wenn eine gerade Zahl eingegeben wird soll eine Fehlermeldung ausgegeben werden.
Kann mir wer erklären wie Modulo das berechnet?
Code:
Code:
#include <iostream>
using namespace std;
// Hauptprogramm
//
int main ()
{
// Variablen
//
int CountdownStart; // Startwert des Countdown
// Abfrage des Startwertes
cout << "Startwert des Countdowns: ";
cin >> CountdownStart;
// Bei geradem Wert das Programm verlassen
if (CountdownStart%2 == false)
{
cout << "Es wurde ein gerader Wert eingegeben " << endl;
}
// Ansonsten weiter
else
{
// Schleife für den Countdown
for (int i=CountdownStart; i>=0; i--)
{
cout << "Countdown: " << i << endl;
// Meldung, wenn die Hälfte erreicht wurde
if (i == CountdownStart/2 + 1)
cout << "Die Haelfte ist vorbei" << endl;
}
}
return 0;
}
MfG nico
|
|
|
03/04/2014, 12:46
|
#2
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
false wird in c++ als 0 angesehen. Wenn der Rest von einer Teilung durch 2 0 ist, ist die Zahl gerade.
|
|
|
03/04/2014, 13:14
|
#3
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Das Programm sollte aber == 0 überprüfen und nicht == false
Es mag so funktionieren, ist aber nicht standardkonform
Padmak
|
|
|
03/04/2014, 13:31
|
#4
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
Kleine Anmerkung zum Code selbst:
using namespace std; ist schlechter Stil. Lieber std::cout und std::cin schreiben.
|
|
|
03/04/2014, 16:11
|
#5
|
elite*gold: 3
Join Date: Apr 2009
Posts: 6,952
Received Thanks: 3,546
|
Quote:
Originally Posted by buFFy!
Kleine Anmerkung zum Code selbst:
using namespace std; ist schlechter Stil. Lieber std::cout und std::cin schreiben.
|
Wieso ist das benutzen von using namespace std; nicht so gut?
|
|
|
03/04/2014, 16:19
|
#6
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Wurde schon das ein oder andere Mal hier erwähnt
Padmak
|
|
|
03/04/2014, 16:48
|
#7
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by Padmak
Das Programm sollte aber == 0 überprüfen und nicht == false
Es mag so funktionieren, ist aber nicht standardkonform
Padmak
|
Doch, das ist standardkonform, in C++ gibt es eine implizite Umwandlung von bool zu int.
Ist auf diese Art nur unschön weil missverständlich.
|
|
|
03/04/2014, 17:04
|
#8
|
elite*gold: 312
Join Date: May 2013
Posts: 449
Received Thanks: 45
|
Also lieber 0 als false verwenden. OK
|
|
|
03/04/2014, 17:11
|
#9
|
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
|
Quote:
|
Kann mir wer erklären wie Modulo das berechnet?
|
Modulo gibt den Rest aus, der bei einer Division entsteht. 3 % 2 (3 / 2 == 1, Rest 1) ergibt z.B. 1, 4 % 2 (4 / 2 == 2, Rest 0) ergibt 0.
Code:
if (CountdownStart%2 == false)
false ist hier gleichzusetzen mit 0, somit wird überprüft, ob der Rest von CountdownStart / 2 == 0 ist.
|
|
|
03/04/2014, 17:35
|
#10
|
elite*gold: 312
Join Date: May 2013
Posts: 449
Received Thanks: 45
|
Quote:
Originally Posted by snow911
Modulo gibt den Rest aus, der bei einer Division entsteht. 3 % 2 (3 / 2 == 1, Rest 1) ergibt z.B. 1, 4 % 2 (4 / 2 == 2, Rest 0) ergibt 0.
Code:
if (CountdownStart%2 == false)
false ist hier gleichzusetzen mit 0, somit wird überprüft, ob der Rest von CountdownStart / 2 == 0 ist.
|
Ahhhh
Also Modulo teilt die Aufgabe, gibt aber nur den Rest aus.
|
|
|
Similar Threads
|
Modulo Schleife oder so
01/22/2013 - C/C++ - 6 Replies
N'Abönd,
ich würde gerne einen Programm schreiben was sagen soll ob x eine Primzahl ist oder nicht.
Dafür wollte ich fragen da ich erst neu angefangen habe mit c++ zu arbeiten welchen Befehl ich am besten nehmen soll. Ich will das der Nutzer eine Zahl eingibt und das Programm x%2 x%3 x%4 teilt und wenn der Rest 0 ist -> keine Primzahl halt mit If x=0 goto blubb und else x ist eine Primzahl. Weis vllt jemand wie ich das am besten machen kann mit "do" vlt?
|
All times are GMT +1. The time now is 02:52.
|
|