Fragen zu einem Programm



  • Moin moin...

    hab einige probleme mit folgenden Programm:

    #include <iostream>
    
    using namespace std;
    
    int  stringtoint (char * szString, char * alpha)
    
    {
    
    	int iStrLen = strlen (szString);
    	int iResult = 0;
    	int iPower = 1;
    	char ascii;
    
    	for(int i = iStrLen - 1; i >= 0; i--)
    	{
    		ascii = szString [i];
    		if (((int)szString[i] - 48) >=0 && ((int)szString[i] - 48) <= 9)
    		{
    			iResult += ((int)szString[i] - 48) * iPower;
    			iPower *= 10;
    		}
    		else
    		{
    			*alpha = ascii;
    			return -1;
    		}
    	}
    	return iResult;
    }
    void main ()
    {
    	int int_zahl;
    	char eingabe[255];
    	int int_arr[255];
    	int arrcount = 0;
    	char alpha;
    	int eingabecount = 1;
    
    	do
    	{
    		cout << eingabecount << "Widerstandswert in Ohm: ";
    		cin >> eingabe;
    		int_zahl = stringtoint (eingabe, &alpha);
    		if (int_zahl >= 0)
    		{
    			eingabecount++;
    			int_arr[arrcount] = int_zahl;
    			arrcount++;
    
    		}
    	}
    	while (alpha != 'n');
    
    	int Rgesamt = 0;
    	for (int i = 0;	i < arrcount; i++)
    	{
    		Rgesamt += int_arr[i];
    	}
    	cout << Rgesamt << endl;
    }
    

    so nun zu meinen fragen:
    1. Wie wird in der Funktion stringtoint() festgestellt, ob ein Zeichen eine Ziffer ist?
    2. Welche Werte gibt die Funktion stringtoint zurück beui der Eingabe folgender Zeichenkette: 876u53k?
    3. Warum startet die for-Schleife bei StrLen - 1 und nicht bei iStrLen ?
    4. Es wird der Operator += verwendet. Könnt man auch =+ nehmen? Evtl. mit Begründung?
    5. Kann man in diesem Prog die do...while Schleife auch durch eine while...do schleife ersetzen? Evtl. auch mit Begründung...?

    Wäre echt nett, wenn sich jemand den Aufgaben stellen könnte... 😉

    <edit>Bitte Code-Tags verwenden!</edit>



  • Sieht nach Hausaufgaben aus.



  • ja stimmt sogar-...nur haben wir diese aufgabe gerade aufbekommen und sitzen hier noch in der schule und versuchen diese aufgaben zu lösen....hilfe wäre nicht schlecht...



  • 1. per if (und Vergleich mit dem richtigen Zeichenbereich)
    2. guck dir die Funktion an, dann siehst du es 😉 (Tip: Wo landest du, wenn das if() nicht geklappt hat?)
    3. Schau mal in deine Aufzeichnungen zum Thema Array-Index und strlen
    4. Nein, es gibt keinen Operator =+
    5. Ja, die Schleifenstrukturen kann man generell ineinander überführen.



  • so das hat uns schon mal weitergeholfen....

    nur sind da noch mehr fragen...

    6. Warum wird der Schleifenzähler dekrementiert?
    7. Aufgrund einer Initialisierung kann sich das prog instabil verhalten (überraschendes Programmende, aber kein Programmabbruch!). Evtl. Begründung?!
    8. Ersetzt man das Gültigkeitskriterium i<arrcount durch i<= arccount werden als Ergebnis unsinnige Werte ausgegeben. Warum?
    9. Die Variable Rgesamt wird nicht nur deklariert, sondern auch mit 0 Initialisiert. Ist das für den folgenden Programmablauf wichtig oder gar notwendig? Evtl. mit Begründung?

    das waren dann auch alle Fragen die ich habe...



  • 6. Schau dir mal an, wo der Zähler anfängt und wo er enden soll 😉
    7. Häh?
    8. Und einmal mehr - Array-Index und Array-Größe
    9. wie wird mit RGesamt gerechnet? Und mit was für einem Wert startet eine Variable, die nicht explizit initialisiert wurde?



  • kann man die antworten noch konkreter geben???

    check das nicht so ganz...

    DANKE!



  • Man kann - aber du sollst schließlich auch noch nachdenken dürfen 😉



  • aber wenn ich es könnte...würde ich dann die fragen hier reinstellen und euch im hilfe bitten?



  • flensking schrieb:

    aber wenn ich es könnte...würde ich dann die fragen hier reinstellen und euch im hilfe bitten?

    Ist der Sinn dieser Aufgaben möglichweise, festzustellen, ob du es selbst kannst? Und nicht, ob du in der Lage bist, Leute zu finden, die für dich denken?



  • Habt ihr keinen Lehrer, der euch das mal erklären kann!?
    Die machen heutzutage auch nichts außer rumsitzen und Kaffee trinken!



  • genauso ist unser lehrer...holt sich nen kaffe und blätert durch sämtliche kataloge wärend der stunde. und wenn man eine frage hat, kommt nur zurück...das Internet ist sooo groß...!!!hö hö...
    also was lernt man daraus...man wird lehrer!!!!!
    also kann ich hier keine weitere hilfe erwarten von euch?



  • flensking schrieb:

    und wenn man eine frage hat, kommt nur zurück...das Internet ist sooo groß

    Das hast du wohl falsch verstanden. Du sollst das Internet als Informationsquelle benutzen, nicht als Hirnersatz.

    flensking schrieb:

    also kann ich hier keine weitere hilfe erwarten von euch?

    Erwarten kannst du sowieso nichts. Viele, die hier helfen, lassen sich normalerweise dafür bezahlen, wenn sie für andere denken. Kostenlose Hilfe wird gern gegeben, wenn der Hilfesuchende ein wenig Eigeninitiative zeigt.

    Äußerungen wie "check das nicht so ganz... " wirkt da eher unproduktiv.



  • flensking schrieb:

    also kann ich hier keine weitere hilfe erwarten von euch?

    Klar kannst du hier Hilfe erwarten, wenn du ein bestimmtes Problem hast - aber alles vorkauen wird dir hier niemand, da mußt du schon selber denken 😉

    Nochmal zu deinen letzten Fragen:
    6. Was würde die Schleife machen, wenn du den Zähler incrementieren würdest? (du startest bei strlen(sz)-1 und willst bei 0 aufhören)
    7. Hier kann ich nicht helfen, weil ich die Frage nicht ganz verstehe - frag lieber deinen Lehrer
    8. arrcount ist die Anzahl der eingegebenen Elemente - was für ein Wert steht in "int_array[arrcount]" nach der letzten Eingabe?
    9. Nicht initialisierte Variablen erhalten einen willkürlichen Ausgangswert - rechne dir den Rest selber zusammen.


Anmelden zum Antworten