Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 13:27

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

Advertisement



[C-Anfänger]Array,Schleifen

Discussion on [C-Anfänger]Array,Schleifen within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2010
Posts: 32
Received Thanks: 0
[C-Anfänger]Array,Schleifen

Hey, ich bräuchte mal eure Hilfe!

In diesem Programm sollen Daten gespeichert und auf Wunsch ausgegeben werden.
Probleme:
-Beim Eingeben eines Produktes/Kunde muss ich direkt alle zehn Arrays eingeben. Eigendlich möchte ich nur ein Array pro eingeben.
-Bei der Ausgabe werden mir 10 Produktnamen, aber nur eine ProduktID und unzwar die 0 ausgebeben.

Selber habe ich schon viel gegoogelt und auch schon eine ähnliche Lösung gefunden die für mich als Anfänger sehr Komplex war. Ich nehme auch gerne Vorschläge für eine Verbesserung dieses Übungsprogrammes entgegen.

Ultim4te is offline  
Old 11/16/2015, 15:22   #2
 
.SkyneT.'s Avatar
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
Verbesserungen:
- Schleifenvariablen würde ich nur, wenn es nötig ist ausserhalb der Schleife deklarieren.
- Variablen sinnvoll benennen, später wirst du nicht mehr wissen was c,i,k ist, ohne den kompletten Code nocheinmal zu lesen.

Hier der verbesserte Code:
(Absichtlich als Bild, damit du es nicht mit Copy&Paste übernimmst :P )
.SkyneT. is offline  
Thanks
1 User
Old 11/16/2015, 16:36   #3
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
Quote:
- Schleifenvariablen würde ich nur, wenn es nötig ist ausserhalb der Schleife deklarieren.
Das ist Teil des strukturierten Programmierens und wird von Professoren und Lehrern meist so gelehrt, da es als sauberer Programmierstil gilt.
warfley is offline  
Thanks
1 User
Old 11/16/2015, 17:05   #4
 
.SkyneT.'s Avatar
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
Quote:
Originally Posted by warfley View Post
Das ist Teil des strukturierten Programmierens und wird von Professoren und Lehrern meist so gelehrt, da es als sauberer Programmierstil gilt.
Echt?
Es ist meiner Meinung nach komplett sinnlos den Gültigkeitsbereich einer Variable unnötig in die Länge zu ziehen. Und schöner/übersichtlicher finde ich es auch nicht, da ich die Variablen, wenn sie ausserhalb der Schleife sind, erst zuordnen/im weiteren Code suchen muss.

Ausserdem sollte diese Methode auch etwas mehr Arbeitsspeicher beanspruchen, da der Speicher erst beim Verlassen der Funktion freigegeben werden kann, anstatt nach Verlassen der Schleife.
(Bin mir hier nicht sicher, könnte auch falsch sein.
Und ja, ich weiß das das bisschen Speicher hier nicht relevant ist.)
.SkyneT. is offline  
Old 11/16/2015, 18:06   #5


 
Jeoni's Avatar
 
elite*gold: 966
Join Date: Apr 2010
Posts: 1,104
Received Thanks: 681
Quote:
Originally Posted by .SkyneT. View Post
Ausserdem sollte diese Methode auch etwas mehr Arbeitsspeicher beanspruchen, da der Speicher erst beim Verlassen der Funktion freigegeben werden kann, anstatt nach Verlassen der Schleife.
(Bin mir hier nicht sicher, könnte auch falsch sein.
Und ja, ich weiß das das bisschen Speicher hier nicht relevant ist.)
Abgesehen davon, dass dieses bisschen Speicher kaum bis keine Relevanz hätte, ist es bei den mir bekannten Compilern auch falsch. Der gesamte Speicher für lokale Variablen einer Funktion (egal, wo sie innerhalb der Funktion deklariert wurden) wird am Funktionsanfang durch dekrementieren vom Stackpointer (ESP / RSP) allokiert. Maximal können zwei lokale Variablen, nennen wir sie hier i1 und i2, die keine Überschneidung ihres Gültigkeitsbereichs aufweisen im Kompilat als eine einzige lokale Variable genommen werden. Beispielsweise wenn man zwei for-Schleifen untereinander hat. Da ist es dann aber egal, ob man in den beiden for-Schleifen direkt Zählvariablen mitdeklariert (ggf. beide gleich nennt) oder am Funktionsbeginn einmal eine Variable deklariert, die in beiden Schleifen zum Zählen benutzt wird.
Mit freundlichen Grüßen
Jeoni
Jeoni is offline  
Thanks
1 User
Old 11/16/2015, 23:11   #6
 
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
habe gerade langeweile, hier hast du paar vorschläge um das zu verfeinern ^^
1. würde ich für 2 verschiedene for schleifen(solange diese nicht in einander sind) den selben counter i benutzen und nicht jedesmal ein andern.

2. würde ich am ende bei der while als bedingung auswahl != 5 statt auswahl <5 nehmen, damit der nicht abbricht sobald man mal ausversehn eine andere zahl eingibt.

3. würde ich die printfs beim menü, sodass man sieht bei welchem namen oder produkt man gerade ist und auch eine if schleife reinsetzen um sicherzustellen das keiner versucht mehr als 10 namen oder produkte einzufügen und wenn dann solls nicht klappen.
z.b beim menü :
Code:
if(nameCount<10)
printf("1.Name %i/10 eingeben\n",nameCount+1);
if(productCount<10)
printf("2.Produkt %i/10 eingeben\n", productCount+1);
und natürlich auch in die case 1 und 2 eine if bedingung z.b in case 1:
Code:
if(nameCount==10)
printf("die maximale kapazität von 10 namen ist bereits erreicht\n");
else {
printf("Vorname eingeben:");
scanf("%s", &Name[nameCount].Vorname);
++nameCount;
}
break;
Slade100 is offline  
Old 11/17/2015, 18:15   #7
 
.SkyneT.'s Avatar
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
Quote:
Originally Posted by Slade100 View Post
3. würde ich die printfs beim menü, sodass man sieht bei welchem namen oder produkt man gerade ist und auch eine if schleife reinsetzen um sicherzustellen das keiner versucht mehr als 10 namen oder produkte einzufügen und wenn dann solls nicht klappen.
Es gibt keine "if-schleifen"! Eine Erklärung dafür ist aber hoffentlich nicht nötig

Grundsätzlich sind die 3 Vorschläge aber schon sinnvoll, da ein Benutzerfreundliches Programm jede mögliche Fehleingabe abdecken sollte ohne dabei abzustürzen.
.SkyneT. is offline  
Reply


Similar Threads Similar Threads
C# Potenzrechnung mit Schleifen.
07/21/2014 - .NET Languages - 14 Replies
Hey, da ich derzeit C# für meine Ausbildung "vorlernen" möchte, versuche ich mit hilfe einer Schleife Potenzrechnung zu tätigen. Mir ist bewusst das es dafür die "Math" klasse gibt, die möchte ich aber nicht nutzen da ich eben schleifen nutzen möchte. Mein Code sieht derzeit so aus: Console.WriteLine("Gib nun bitte die 1. Zahl ein: "); zahl1 = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Gib nun bitte die 2. Zahl ein: "); zahl2 = Convert.ToInt32(Console.ReadLine()); ...
[PHP] Schleifen Problem
06/14/2013 - Web Development - 4 Replies
Hey, Ich bin grad dabei PHP zu lernen hab das früher schonmal gemacht ein oder zwei Jahre her aber da ich keine Zeit mehr hatte konnte ich es nicht wirklich 100%ig lernen bin grad wieder bei den schleifen.. <?php while ( $wert < 5 ) { echo "Nr. $wert <br />";
While Schleifen Problem
12/31/2010 - AutoIt - 24 Replies
Hi Com., ich habe einen Fritzbox ip changer geschrieben. Alles klappt wunderbar, nur macht mir die while schleife zu schaffen. Hier mein Script. #include <INet.au3>
Probleme mit den Schleifen x.x
07/23/2010 - AutoIt - 18 Replies
Ja, hallo. :D Mein Problem ist das ich gerne einen Bot bauen würde der einnen Tastendruck ausführt wenn sich ein bestimmer Pixel auf dem Bildschirm verändert. Nur ist das Problem das AutoIt zu lahm ist da der Pixel sich schnell beweget und somit auch seine Farbe ändert und der Bot dann es nichtmehr schafft zuzuschlagen. :P Was ich nun versucht hab ist das man vll. sozusagen eine Tolleranz einbaut wie z.b. bei dem Pixelsearch Befehl nur ich hab ka. wie ich das anstellen soll. Ich...



All times are GMT +2. The time now is 13:27.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.