Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 12:32

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C++ Bitte eine Erklärung =(

Discussion on C++ Bitte eine Erklärung =( within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
spion9613's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 534
Received Thanks: 342
C++ Bitte eine Erklärung =(

hi evps
die aufgabe war

Entwickeln Sie eine C++-Anwendung, die den Anwender zur Eingabe einer vierstelligen Zahl auffordert. Das Programm soll daraufhin die Quersumme der vierstelligen Zahl errechnen und das Ergebnis auf den Bildschirm ausgeben.

dort bin ich nicht wirklich darauf gekommen dann habe ich in einem forum nachgefragt.
Die sagten das ist richtig (int main):


char x[5];

cout << "Schreibe eine 4stellige Zahl" << endl;
cin.getline(x,sizeof(x));

int y = 0;

for(int i = 0; i < sizeof(x) - 1; i++)
{
y += (x[i] - '0');
}


cout << y << endl;

getch();

was ich nicht verstehe hab ich jetzt mal **** gedruckt.

Hoffe ihr könnt mir helfen =( (Bin noch Anfänger)

mfg
spion9613 is offline  
Old 12/11/2010, 11:44   #2
 
ZeraPain's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 360
Received Thanks: 249
naja, das ist eine for schleife in der jedes feld aus dem array x zu y addiert wird, also die quersumme wird gebildet.

damit aus dem char x[i] ein int wird, wird jedes mal noch der char 0 abgezogen.
jedes feld des arrays x hat immer nur einen char, also 1 byte (eine ziffer in deinem fall)

man kann es auch mal so verständlicher für dich schreiben vll:

Code:
#include <iostream>
using namespace std;

int main(void)
{
	char eingabe[5];
	int quersumme = 0;

	cout << "Schreibe eine 4 stellige Zahl: ";
	cin >> eingabe;

	for (int i = 0; i < sizeof(eingabe) -1; i++)
	{
		quersumme += (eingabe[i] - '0');
	}

	cout << "Quersumme: " << quersumme << endl;
	system("pause");

	return 0;
}
ZeraPain is offline  
Thanks
1 User
Old 12/11/2010, 12:04   #3
 
spion9613's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 534
Received Thanks: 342
was heißt eig. += ??

mfg
spion9613 is offline  
Old 12/11/2010, 12:12   #4
 
ZeraPain's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 360
Received Thanks: 249
x += 2 ist das gleiche wie x = x + 2, nur kürzer zu schreiben
ZeraPain is offline  
Thanks
1 User
Old 12/11/2010, 12:50   #5
 
spion9613's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 534
Received Thanks: 342
habs mir jetzt etwas länger angeguckt aber verstehe die Schleife einfach nicht

for (int i = 0; i < sizeof(x) -1 ; i++)
{
y += (x[i] - '0');
}

könntest du den code bitte mit Kommentaren // belegen?
Könnte mir vllt weiterhelfen

mfg
spion9613 is offline  
Old 12/11/2010, 13:05   #6
 
ZeraPain's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 360
Received Thanks: 249
for {} ist einfach eine schleife, die solange abläuft bis ein wert erreicht wird.
i wird als int mit dem wert 0 definiert. die bedingung ist, dass i kleiner als die größe des arrays x -1 bleibt ( i < 4 ) und pro durchlauf wird i um 1 erhöht ( i ++ ).
das heißt, dass die schleife insgesamt 4 mal durchläuft (i = 0, 1, 2, 3)

mit i kann man dann in der schleife die einzelnen felder des arrays abrufen, in denen die zahl gespeichert ist.

bsp eingabe: 1000
x[0] = 1
x[1] = 0
x[2] = 0
x[3] = 0

dabei wird der wert jedes mal jetzt zu y addiert
ZeraPain is offline  
Thanks
1 User
Old 12/11/2010, 13:17   #7
 
spion9613's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 534
Received Thanks: 342
aso glaube habs verstanden
erster durchlauf:
{
y += (x[0] - '0');
}

zweiter Durchlauf:
{
y+=(x[1] - '0')
}

dritter Durchlauf:
{
y+=(x[2] - '0')
}

vierter Durchlauf:
{
y+=(x[3] - '0')
}

Dann steht in der Klammer i. Und i wird in jedem Durchlauf um 1 erhöht,weil in der For Schleife (i++) steht

und noch eine Frage
Wenn man mit arrays diese for Schleife macht muss man dann immer '0' eingeben?

mfg
spion9613 is offline  
Old 12/11/2010, 13:35   #8
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
Quote:
Originally Posted by Cøliη_© View Post
Spam nicht sondern schick ihm nächstes mal eine PM oder benutze die SuFu das führt nur vom Thema ab

Lg.
Sein Post passt vollkommen zum Thema, deiner ist spam


@spion9613 Lern bitte erstmal die Grundlagen, da fehlt ja alles ._.
MoepMeep is offline  
Thanks
1 User
Old 12/11/2010, 13:48   #9
 
ZeraPain's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 360
Received Thanks: 249
Quote:
Originally Posted by spion9613 View Post
aso glaube habs verstanden
erster durchlauf:
{
y += (x[0] - '0');
}

zweiter Durchlauf:
{
y+=(x[1] - '0')
}

dritter Durchlauf:
{
y+=(x[2] - '0')
}

vierter Durchlauf:
{
y+=(x[3] - '0')
}

Dann steht in der Klammer i. Und i wird in jedem Durchlauf um 1 erhöht,weil in der For Schleife (i++) steht

und noch eine Frage
Wenn man mit arrays diese for Schleife macht muss man dann immer '0' eingeben?

mfg
das - '0' dient nur dazu, um aus einem char ein int zu machen
ZeraPain is offline  
Thanks
1 User
Old 12/11/2010, 14:39   #10
 
spion9613's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 534
Received Thanks: 342
Quote:
Originally Posted by MoepMeep View Post
Sein Post passt vollkommen zum Thema, deiner ist spam


@spion9613 Lern bitte erstmal die Grundlagen, da fehlt ja alles ._.
Konnte das mit der Schleife nur so: (nur eine Variable)

for(int i = 1;i < 10;i++)
{
cout << i << endl;
}

die anderen Grundlagen kann ich eig.
das mit den Schleifen war mein Problem (jetzt verstanden)
Mache dazu noch ein paar Aufgaben damit ich mich sicher fühle und dann fang ich erst mit den nächsten schritten an.
spion9613 is offline  
Old 12/16/2010, 00:45   #11


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
dass man '0' abzieht, um daraus "einen int zu machen" ist so nicht richtig.

Das was man in die Konsole eingibt, ist eine Zeichenkette.
Gebe ich 555 ein, ist das die Zeichenkette "555".
Das ist nicht das gleiche wie der numerische Wert 555!
"5" ist wie ein Buchstabe; ein Teil einer Zeichenkette. Du findest alle ASCII Zeichen in der ASCII-Zeichentabelle mit ihren dazugehörigen echten Werten.

Der "Buchstabe" '0' zb. hat den Wert 48 in der Tabelle.
Alle weiteren Ziffern folgen ('1' = 49 usw.).
Wenn du nun also von dem Buchstaben, der eingegeben wird, zb. '5' den Wert von '0' abziehst, erhälst du den tatsächlichen Zahlenwert (das ist keine "Konvertierung", sondern reine Logik).
53 - 48 = 5
Wenn du also jeden Teil der Eingabe durchgehst und immer '0' davon abziehst, erhälst du den numerischen Wert von jeder Ziffer.
Wenn du die alle addierst hast du die Quersumme.


Du musst dir eben nur immer vor Augen halten, dass '0' nicht gleich 0 ist, sondern eigentlich 48
MrSm!th is offline  
Old 12/16/2010, 16:06   #12
 
elite*gold: 0
Join Date: Sep 2007
Posts: 53
Received Thanks: 11
ASCII-Tabelle
Wenn es dich genau interessiert


Der Code ist übrigends nicht idiotensicher, man kann auch z.B. "abcd" eingeben und er müsste die Quersumme 202 errechnen.
MasterGamer2 is offline  
Reply


Similar Threads Similar Threads
erklärung bitte .__.
10/26/2010 - AutoIt - 9 Replies
Also .. ich habe mal eine frage an "die großen" :D könnt ihr mir mal einen source code hier reinstellen und mir einfach mal erklären was was bedeutet.. ? ich habe schon so gut wie alles gelesen und selber macht aber checke es immer noch net .. einfach mal erklären .. Am besten wäre es auch wen ihr es schrit für schrit amchen würdet..
Brauch eine Erklärung
03/28/2010 - Metin2 Private Server - 6 Replies
Hallo als erstes es geht um das Thema Clientmodden. Ich habe 4 Rüstungen (Dgp,Ssp,King und 90 Rüssi) geändert und nur schnell die Farbe geändert wieder eingepackt dann guck ich nach obs richtig ist. Seht selbst: http://img97.imageshack.us/img97/3773/0328224647.j pg:facepalm: Im Hintergrund seht ihr noch ein paar mit einer Rüstung die ich geändert habe. Kann mir jemand erklären woran das liegt das die so extrem glänzen?
Erklärung bitte
03/23/2010 - Silkroad Online - 3 Replies
Hallo liebe User Ich habe mal eine Frage den ich weiß nicht was "Full Farmed" bedeuten soll könnte mich jemand dazu aufklären Vielen Dank für alle Antworten FG dizzy1223
Bitte Erklärung XD
01/24/2010 - Metin2 - 8 Replies
also... mir wurde mehrfach gesagt :geh doch erze picken um an geld zu kommen... was soll ich dann mit den erzen machen?? so verkaufen? veredeln? ich habe keine ahnung also bitte helft mir:D mfg herop
:OO bitte um erklärung xD
09/07/2008 - Kal Online - 2 Replies
YouTube - Kal Online Hacks - What You Know About? Part One kann mir das einer erklären Oo



All times are GMT +1. The time now is 12:32.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.