Wäre nett, wenn ihr mir helft ;)



  • Hey,

    habe bis zum 30.09.2008 den Auftrag bekommen ein Programm zu schreiben. Nur Leider bekomm ich dies so garnicht auf die Reihe. Deswegen stelle ich mal die Aufgabenstellung rein und hoffe, dass mir da jemand helfen kann.

    der Sibbi

    Aufgabe:

    Erstellen Sie ein C-Programm, mit dem Sie den Gesamtwiderstand einer Reihen- und einer Parallelschaltung berechnen können.

    Teil 1: Es sind die Zahlenwerte von zwei Widerständen R1 und R2 in der
    Einheit Ohm einzulesen.
    Berechnen Sie den Reihen- und den Parallelwiderstand.
    Geben Sie den Reihenwiderstand Rr und den Parallelwiderstand Rp mit den zugehörigen Einheiten aus.

    Teil 2: Das Programm soll nun erweitert werden. Mit Hilfeder if-Anweisung (Verzweigung) soll nun die Eingabe überprüft werden. Wird ein negativer Widerstand oder NULL eingegeben, so soll eine Fehlermeldung am Bildschirm ausgegeben werden.
    (Hinweis: Verlassen des Hauptprogramms mit der Anweisung: exit(0);)

    Teil 3: Die Ausgabe soll verbessert werden. Bei der Ausgabe sollen alle Werte
    < 1Ω in der Einheit mΩ (Faktor 10 "hoch"-3)
    > oder = 1Ω und < 1.000Ω in der Einheit Ω (Faktor 1)
    > oder = 1.000 und < 1.000.000Ω in der Einheit kΩ (Faktor 10 "hoch"3)
    > oder = 1.000.000Ω in der Einheit MΩ (Faktor 10 "hoch"6)
    erscheinen.

    Teil 4: Das Programm soll nun so erweitert werden, dass beliebig viele Widerstände eingelesen werden können. Hierzu benötigen Sie eine Schleife (do .. while, while oder for)

    Hinweis:
    ~> Arbeiten Sie methodenorientiert, d.h. Problemstellung, Problemanalyse,....

    ~> Erstellen Sie für alle Programmteile zunächst ein Struktogramm

    ~> Untersuchen Sie in Testläufen des Programms die Sonderfälle, dass eine oder alle Widerstände Null sind.



  • Was hast du denn schon? Stell konkrete Fragen, wo es hapert.



  • Wenn ich ehrlich bin haperts bei mir generell. Komme mit C so gar nicht klar.



  • Tjo, dann würde ich mir mal ein C Tutorial schnappen und loslegen. Hast ja noch bis zum 30.9. genug Zeit, das Programm zu schreiben.



  • Da du nicht den kompletten Sprachumfang für diese Aufgabe brauchst hab ich ein "kleines" Tutorial gefunden. Sollte in 4 Tagen schaffbar sein..

    Vielleicht kannst du es ja gebrauchen 🙂

    http://www.eggdrop.ch/texts/c/



  • Du wirst hier niemanden finden, der deine Hausaufgaben macht.

    Wenn du konkrete Fragen oder Probleme hast, dann stell sie, aber es sollte zumindest ersichtlich sein, dass du gewillt bist, das Problem zu verstehen und zu lösen.



  • vlad_tepesch schrieb:

    Du wirst hier niemanden finden, der deine Hausaufgaben macht.

    da wäre ich mir nicht so sicher.



  • @ cLover: hatte ja auch nicht vor jemanden zu finden, der meine aufgabe macht. habe nur auf tipps, wie ich da rangehen kann, gehofft.

    @vlad_tepesch: thx für den link. werd ich dann mal durchstöbern



  • dumme gibts genug schrieb:

    vlad_tepesch schrieb:

    Du wirst hier niemanden finden, der deine Hausaufgaben macht.

    da wäre ich mir nicht so sicher.

    Ja zweifellos, aber dann sollte die Aufgabenstellung ansprechend sein. Diese Aufgabe hat nichts mit einem interessanten Algorithmus zu tun, sondern wäre für die meisten hier routiniertes runterschreiben eines kleinen Programms mit ein paar ifs und fors.



  • 😕 hab ich auch nicht behauptet vielleicht hast du vlad gemeint 🙂



  • Ups sorry, hab das mit euch beiden total vercheckt.

    Hab mich mal auf Teil 1 meiner Aufgabe gestürzt. Leider immer wieder mit irgendwelchen Fehlermeldungen. Hoffe könnt mir sagen, was ich falsch mache.

    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    
    float r1, r2, rr, rp,rrMIO, rrKO, rrMO, rpMIO, rpKO, rpMO;
    
    int main(int argc, char *argv[])
    {
            printf("\n\n\tHerzlich Willkommen,\n");
    		printf("\tdieses Programm hilft Ihnen dabei, den Gesamtwiderstand bei einer");
    		printf("\t\tReihen- und Parallelschaltung zu errechnen.\n\n\n");
    
    		printf("Bitte R1 eingeben: ");
    		scanf_s("%f", &r1);
    
    		if (r1<=0)
    		{
    			printf("\nFehler: Bitte nur positive Werte ueber 0 eingeben !!!\a");
    			printf("\n\n\nDas Programm wird beendet.\n");
    			exit(0);
    		}
    
    		printf("Bitte R2 eingeben: ");
    		scanf_s("%f", &r2);
    
    		if (r2<=0)
    		{
    			printf("\nFehler: Bitte nur positive Werte ueber 0 eingeben !!!\a");
    			printf("\n\n\nDas Programm wird beendet.\n");
    			exit(0);
    		}
    
    		printf("\n");
    
    		rr=r1+r2;
    
    		rp=(r1*r2)/(r1+r2);
    
    		if (rr<1)
    		{
    			rr = r1+r2;
    			rrMIO=rr*1000;
    			printf("Bei der Reihenschaltung betreagt der Widerstand in mOhm: %f",rrMIO);
    			printf("\n");
    		}
    	else
    	{
    		if ((rr>=1) & (rr<1000))
    		{
    			printf("Bei der Reihenschaltung betreagt der Widerstand in Ohm: %f",rr);
    			printf("\n");
    		}
    		else
    		{
    			if ((rr>=1000) & (rr<1000000))
    			{
    				rr = r1+r2;
    				rrKO=rr/1000;
    				printf("Bei der Reihenschaltung betreagt der Widerstand in kOhm: %f",rrKO);
    				printf("\n");
    			}
    			else
    			{
    				if (rr>1000000)
    				{
    					rr = r1+r2;
    					rrMO=rr/1000000;
    					printf("Bei der Reihenschaltung betreagt der Widerstand in MOhm: %f",rrMO);
    					printf("\n");
    				}
    			}
    		}
    	}
    
    		if (rp<1)
    		{
    			rp = (r1*r2)/(r1+r2);
    			rpMIO=rp*1000;
    			printf("Bei der Parallelschaltung betreagt der Widerstand in mOhm: %f",rpMIO);
    			printf("\n");
    		}
    	else
    	{
    		if ((rp>=1) & (rp<1000))
    		{
    			printf("Bei der Parallelschaltung betreagt der Widerstand in Ohm %f",rp);
    			printf("\n");
    		}
    		else
    		{
    			if ((rp>=1000) & (rp<1000000))
    			{
    				rp = (r1*r2)/(r1+r2);
    				rrKO=rr/1000;
    				printf("Bei der Parallelschaltung betreagt der Widerstand in kOhm %f",rrKO);
    				printf("\n");
    			}
    
    			else
    			{
    				if (rp>=1000000)
    				{
    					rp = (r1*r2)/(r1+r2);
    					rrMO=rr/1000000;
    					printf("Bei der Parallelschaltung betreagt der Widerstand in MOhm: %f",rrMO);
    					printf("\n");
    				}
    			}
    		}
    	}
    
    	printf("\n\n\nZum beenden: ");
    
    	return 0;
    }
    

    FALSCHEN BEITRAG EDITIERT !!! DIESEN BITTE NICHT BEACHTEN



  • Verarschen können wir uns selber. Wenn du es wirklich ernst meinst, arbeite ein C Tutorial durch.



  • der-sibbi schrieb:

    Leider immer wieder mit irgendwelchen Fehlermeldungen...

    Und warum postest du nicht diese irgendwelchen Fehlermeldungen? 😮





  • #include "stdafx.h" 
    
    using namespace System; 
    
    int main(array<System::String ^> ^args)
    

    Wo hast Du den Quatsch her? Was stattdessen da hin kommt steht auf Seite eins in jedem Tutorial. Bisschen mehr denken und bisschen weniger Copy&Paste bitte.



  • hat visual c++ 08 mir vorgegeben



  • scanf("%d", &r1);
    scanf("%d", &r2);
    

    du mußt %f anstelle von %d schreiben, weil %d ein int erwartet du aber float willst.

    printf("bei einer Reihenschaltung: %f",rr);
    printf("\nbei einer Parallelschaltung: %f",rp);
    

    du mußt in den text %f eintragen, damit printf() den float-wert ausgibt. außerdem hattest du das komma vergessen.

    ansonsten sollte alles funktionieren.



  • der-sibbi schrieb:

    @ cLover: hatte ja auch nicht vor jemanden zu finden, der meine aufgabe macht. habe nur auf tipps, wie ich da rangehen kann, gehofft.

    und was genau hast du dir dabei vorgestellt?

    • Dateneingabe von der Tastatur. Das sollte jeder bekommen, wenn nicht, dann fehlen dir die Grundlagen der Programmiersprache, so einfach ist das. D.h. wenn du nicht weißt, wie man Daten von der Tastatur in C liest, dann lies dir ein Einstiegstutorial.
    • Wie berechnet man, wenn man die Daten schon hat? Auch Grundlagen der Programmiersprache. Deine Aufage ist einfach: Daten lesen und mit den Daten rechnen. Liest mal einfach die Aufgabe durch.

    So, genügt dir das? Als letzter Tipp: könntest du diese Aufgabe auf einem Blatt Papier? Sprich, wenn ich auf einen Zettel die gewünschten Widerständen schreib, könntest du die Ergebnisse mit Bleistift nachrechnen? Wenn ja, dasselbe in C.

    ---

    Was dein Code anbetrifft: das ist weder C noch C++. Keine Ahnung, was das für eine Sprache ist und da frag ich mich: wie kaputt muss denn ein C oder C++ Compiler sein, der sowas schluckt? Im Orakel von Google findet man tausende Einleitungen von der C Sprache. Sehr nett: http://de.wikibooks.org/wiki/C-Programmierung

    cLover schrieb:

    Da du nicht den kompletten Sprachumfang für diese Aufgabe brauchst hab ich ein "kleines" Tutorial gefunden. Sollte in 4 Tagen schaffbar sein..

    Vielleicht kannst du es ja gebrauchen 🙂

    http://www.eggdrop.ch/texts/c/

    Für mich hat sich dieses Tutorial mit folgender Aussage vollkommen disqualifiziert

    1.3 Und was ist mit C++?

    C++ ist nichts anderes als ein erweitertes C. Alles was in C erlaubt ist geht auch mit C++. C++ enthält Zusätzliches für die objektorientierte Programmierung und ist somit etwas komplizierter als C. Wer C kann, kann ohne weiteres C++ lernen.

    Alles Kässe, vor allem der letzte Satz.



  • 100 Flocken und Du hast morgen das Programm.
    Wer nicht lernen will, blecht eben -> nur so geht das nicht Dein ganzes Leben. Wenn man das Ding zwischen Ohren ein wenig rotieren laesst, ist diese simple Aufgabe schnell geloest.

    Ivo



  • alsoo, hab mich gestern abend nochmal an die sache rangesetzt. bin auch meines erachtens "weit" gekommen.

    // Headerdateien
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    
    // Deklarationen
    float r1, r2, rr, rp,rrMIO, rrKO, rrMO, rpMIO, rpKO, rpMO;
    
    // Starten der Hauptfunktion
    int main(int argc, char *argv[])
    {
            // Ausgabe von Willkommen und Programmerklärung
    		printf("\n\n\tHerzlich Willkommen,\n");
    		printf("\tdieses Programm hilft Ihnen dabei, den Gesamtwiderstand bei einer");
    		printf("\t\tReihen- und Parallelschaltung zu errechnen.\n\n\n");
    
    		// Eingabedialog von R1
    		printf("Bitte R1 eingeben: ");
    		scanf_s("%f", &r1);
    
    		// Vergleich ob r1 kleiner oder gleich 0 ist
    		if (r1<=0)
    		{
    			// Falls zutreffend: Fehlermeldung und Programm beenden
    			printf("\nFehler: Bitte nur positive Werte ueber 0 eingeben !!!\a");
    			printf("\n\n\nDas Programm wird beendet.\n");
    			exit(0);
    		}
    
    		// Eingabedialog von R2
    		printf("Bitte R2 eingeben: ");
    		scanf_s("%f", &r2);
    
    		// Vergleich ob r2 kleiner oder gleich 0 ist
    		if (r2<=0)
    		{
    			// Falls zutreffend: Fehlermeldung und Programm beenden
    			printf("\nFehler: Bitte nur positive Werte ueber 0 eingeben !!!\a");
    			printf("\n\n\nDas Programm wird beendet.\n");
    			exit(0);
    		}
    
    		// Neue Zeile
    		printf("\n");
    
    		// Rechnung von rr
    		rr=r1+r2;
    
    		// Rechnung von rp
    		rp=(r1*r2)/(r1+r2);
    
    		// Vergleich ob rr kleiner als 1 ist
    		if (rr<1)
    		{
    			// Falls zutreffend: rr umrechnen zu mOhm und Ausgabe in mOhm
    			rrMIO=rr*1000;
    			printf("Bei der Reihenschaltung betreagt der Widerstand in mOhm: %f",rrMIO);
    			printf("\n");
    		}
    
    		else
    		{
    			// Vergleich ob rr größer oder gleich 1 und kleiner als 1000 ist
    			if ((rr>=1) & (rr<1000))
    			{
    				// Falls zutreffend: Ausgabe von rr in Ohm
    				printf("Bei der Reihenschaltung betreagt der Widerstand in Ohm: %f",rr);
    				printf("\n");
    			}
    
    			else
    			{
    				// Vergleich ob rr größer oder gleich 1000 und kleiner als 1000000 it
    				if ((rr>=1000) & (rr<1000000))
    				{
    					// Falls zutreffend: rr umrechnen zu kOhm und Ausgabe in kOhm
    					rrKO=rr/1000;
    					printf("Bei der Reihenschaltung betreagt der Widerstand in kOhm: %f",rrKO);
    					printf("\n");
    				}
    
    				else
    				{
    					// Vergleich ob rr größer als 1000000 ist
    					if (rr>1000000)
    					{
    						// Falls zutreffend: rr umrechnen zu MOhm und Ausgabe in MOhm
    						rrMO=rr/1000000;
    						printf("Bei der Reihenschaltung betreagt der Widerstand in MOhm: %f",rrMO);
    						printf("\n");
    					}
    				}
    			}
    		}
    
    		// Vergleich ob rp kleiner als 1 ist
    		if (rp<1)
    		{
    			// Falls zutreffend: rp umrechnen zu mOhm und Ausgabe in mOhm
    			rpMIO=rp*1000;
    			printf("Bei der Parallelschaltung betreagt der Widerstand in mOhm: %f",rpMIO);
    			printf("\n");
    		}
    		else
    		{
    			// Vergleich ob rp größer oder gleich 1 und kleiner als 1000 ist
    			if ((rp>=1) & (rp<1000))
    			{
    				// Falls zutreffend: Ausgabe von rp in Ohm
    				printf("Bei der Parallelschaltung betreagt der Widerstand in Ohm %f",rp);
    				printf("\n");
    			}
    
    			else
    			{
    				// Vergleich ob rp größer oder gleich 1000 und kleiner als 1000000 ist
    				if ((rp>=1000) & (rp<1000000))
    				{
    					// Falls zutreffend: rp umrechnen zu kOhm und Ausgabe in kOhm
    					rpKO=rr/1000;
    					printf("Bei der Parallelschaltung betreagt der Widerstand in kOhm %f",rpKO);
    					printf("\n");
    				}
    
    				else
    				{
    					// Vergleich ob rp größer oder gleich 1000000 ist
    					if (rp>=1000000)
    					{
    						// Falls zutreffend: rp umrechnen zu MOhm und Ausgabe in MOhm
    						rpMO=rp/1000000;
    						printf("Bei der Parallelschaltung betreagt der Widerstand in MOhm: %f",rpMO);
    						printf("\n");
    					}
    				}
    			}
    		}
    
    		// Ausgebae zum beenden
    		printf("\n\n\nZum beenden: ");
    
    	return 0;
    }
    

    nur teil vier, also das mit der schleife, damit ich beliebig viele widerstände einlesen kann bekomme ich nicht wirklich auf die kette.

    und noch eine frage: wie kann ich bei der ausgabe die dezimalstellen auf zwei begrenzen ?


Anmelden zum Antworten