App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Quersumme in C++ ??
- Ersteller STAR PREDATOR
- Erstellt am
STAR PREDATOR
Cadet
Halli Hallo,
steige hier im moment voll nicht mehr durch
Soll die Quersumme Berechnen von 0 bis int_max also 32767 , doch ich habe anscheinend gerade voll das brett vorm kopf
ich muss ja jede Ziffer einer zahl abspalten und addieren, doch ich weiß nicht wie ichs machen soll... da war was mit % und dann / usw........ *kopfzerbrech*
Würde mich freuen wenn ihr mir helfen könntet
Gruß
PREDATOR
steige hier im moment voll nicht mehr durch
Soll die Quersumme Berechnen von 0 bis int_max also 32767 , doch ich habe anscheinend gerade voll das brett vorm kopf
ich muss ja jede Ziffer einer zahl abspalten und addieren, doch ich weiß nicht wie ichs machen soll... da war was mit % und dann / usw........ *kopfzerbrech*
Würde mich freuen wenn ihr mir helfen könntet
Gruß
PREDATOR
Nachtschicht
Admiral Special
Wenn doch alles so einfach wäre
for (int i = 1; i <= 32767; i++)
{
char buff[16];
sprintf (buff, "%d", i);
// q ist die Quersumme einer Zahl
// falls die die Summe aller Quersummen gefragt ist,
// folgende Zeile an den Anfang stellen
unsigned long q = 0;
for (int j = 0; buff [ j ]; j++)
{
q+= (unsigned long) buff [ j ] - '0';
}
// hier ist q für eine Zahl verfügbar
cout << "q=" << q << endl;
}
Edit: Fehler beseitigt
for (int i = 1; i <= 32767; i++)
{
char buff[16];
sprintf (buff, "%d", i);
// q ist die Quersumme einer Zahl
// falls die die Summe aller Quersummen gefragt ist,
// folgende Zeile an den Anfang stellen
unsigned long q = 0;
for (int j = 0; buff [ j ]; j++)
{
q+= (unsigned long) buff [ j ] - '0';
}
// hier ist q für eine Zahl verfügbar
cout << "q=" << q << endl;
}
Edit: Fehler beseitigt
Zuletzt bearbeitet:
STAR PREDATOR
Cadet
? nix versteh (liegt vielleicht an der uhrzeit )
soweit bin ich bis jetzt:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
using namespace std;
int main () {
int nI;
int nMerker=0;
for (nI=0; nI<32767; nI++) {
nI%10==nMerker;
cout << nI <<" " << nMerker << endl;
}
system ("PAUSE");
return 0;
}
soweit bin ich bis jetzt:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
using namespace std;
int main () {
int nI;
int nMerker=0;
for (nI=0; nI<32767; nI++) {
nI%10==nMerker;
cout << nI <<" " << nMerker << endl;
}
system ("PAUSE");
return 0;
}
Nachtschicht
Admiral Special
Bei meiner Lösung printe ich die Binärzahl als ASCII-Zahl in einen Buffer und addiere anschließend die Einzelziffern. Ganz so, wie man das mit Zettel und Bleistift machen würde.? nix versteh (liegt vielleicht an der uhrzeit )
Mit Modulo-Rechnung geht es sicher auch, aber da muß man etwas länger überlegen.
STAR PREDATOR
Cadet
und genau mit % sollen wir es machen
das mit buffer haben wir noch garnicht gelernt
das mit buffer haben wir noch garnicht gelernt
Nachtschicht
Admiral Special
Dann könnte es so gehen, den Code dann in die Schleife von oben einfügen.
// Quersumme einer Zahl, Zahl steht in Variable i
unsigned long q=0;
int j = i;
do {
q+=j%10;
j /=10;
} while (j)
// Quersumme einer Zahl, Zahl steht in Variable i
unsigned long q=0;
int j = i;
do {
q+=j%10;
j /=10;
} while (j)
Zuletzt bearbeitet:
STAR PREDATOR
Cadet
hm,irgendwie funzt das nicht
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.249
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Müsste aber eigentlich gehen. Initialisierst Du q vorher mit 0?
STAR PREDATOR
Cadet
habs hinbekommen
wie genau kann ich morgen posten da es aufm Laptop ist und nicht auf meinem Desktop PC
vielen dank noch mal
Gruß
PREDATOR
wie genau kann ich morgen posten da es aufm Laptop ist und nicht auf meinem Desktop PC
vielen dank noch mal
Gruß
PREDATOR
CapJo
Admiral Special
Die Lösung von i_hasser und ein paar Kommentare
Code:
#include "stdafx.h" // für Visual C++ unter Windows
int main(int argc, char* argv[])
{
int start = 1; // Variable für die erste Zahl der zu berechnenden Quersumme
int end = 32767; // Variable für die letzte Zahl der zu berechnenden Quersumme
int i = start; // Hilfsvariable für die Schleifendurchläufe
int tmp; // Temporäre Variable - Hilfsvariable
int qsum = 0; // Variable für die Quersumme
for(i;i<=end;i++)
for(tmp=i;tmp!=0;tmp/=10) qsum+=tmp%10;
printf("Die Quersumme fuer den Zahlenbereich von %d bis %d betraegt = %d\n", start, end, qsum);
return 0;
}
Die Lösung von i_hasser und ein paar Kommentare
Code:#include "stdafx.h" // für Visual C++ unter Windows int main(int argc, char* argv[]) { int start = 1; // Variable für die erste Zahl der zu berechnenden Quersumme int end = 32767; // Variable für die letzte Zahl der zu berechnenden Quersumme [color=red][b]int i = start;[/b][/color] // Hilfsvariable für die Schleifendurchläufe int tmp; // Temporäre Variable - Hilfsvariable int qsum = 0; // Variable für die Quersumme for([color=red][b]i[/b][/color];i<=end;i++) for(tmp=i;tmp!=0;tmp/=10) qsum+=tmp%10; printf("Die Quersumme fuer den Zahlenbereich von %d bis %d betraegt = %d\n", start, end, qsum); return 0; }
Das i allein tut da aber auch net viel .
Nachtschicht
Admiral Special
Ob das nun einfacher ist? Warum eigentlich "j=n" ?Machts doch net so komplifiziert:
Code:int i,j,qsum=0; for(i=1;i<=n;i++) for(j=n;j!=0;j/=10) qsum+=j%10;
et voila
Nachtschicht
Admiral Special
Also "j=i" würde ich verstehen, aber "j=n"? D.h das Programm berechnet 32767 mal die Quersumme von 32767. Richtig?
CapJo
Admiral Special
Das i allein tut da aber auch net viel .
Ich wollte die "start"-Variable nicht als Zähler verwenden, damit ich am Schluss den Bereich der berechneten Quersummen angeben kann.
Achja ... hab den Fehler gestern Abend schon ausgebessert, aber vergessen es anzumerken.
Zuletzt bearbeitet:
CapJo
Admiral Special
Da hast du recht ... es ist unnötig ...
Ich hab deinen Hinweis anders interpretiert ...
Ich hab deinen Hinweis anders interpretiert ...
STAR PREDATOR
Cadet
so,habe das ganze mit einer while schleife gelöst und anstatt alle quersummen von 0 bis int_max einfach ne Zahleneingabe gemacht.....
dann hat das ganze wunderbar geklappt
vielen dank euch noch mal hatte leider keine zeit früher zu antworten viele klausuren,protokolle usw. zur zeit ...... weiß im moment garnicht wie ich das alles fertig bekommen soll...... und am montag müssen wir auch schon das nächste programm mit protokoll abgeben
damit werde ich mich freitag mal auseinander setzen.
auf jeden fall weiß ich jetzt, wo ich fragen muss,falls ich probleme habe da, man hier schnelle und kompetente hilfe bekommt
vielen vielen dank noch mal an alle
Ihr seit echt klasse (und das war jetzt kein geschleime sondern ernst gemeint!)
Gruß
PREDATOR
dann hat das ganze wunderbar geklappt
vielen dank euch noch mal hatte leider keine zeit früher zu antworten viele klausuren,protokolle usw. zur zeit ...... weiß im moment garnicht wie ich das alles fertig bekommen soll...... und am montag müssen wir auch schon das nächste programm mit protokoll abgeben
damit werde ich mich freitag mal auseinander setzen.
auf jeden fall weiß ich jetzt, wo ich fragen muss,falls ich probleme habe da, man hier schnelle und kompetente hilfe bekommt
vielen vielen dank noch mal an alle
Ihr seit echt klasse (und das war jetzt kein geschleime sondern ernst gemeint!)
Gruß
PREDATOR
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 465
- Antworten
- 2K
- Aufrufe
- 319K
- Antworten
- 0
- Aufrufe
- 69K
- Antworten
- 0
- Aufrufe
- 63K