Problem mit einer Übung

Tutorials.at
Verfügbare Informationen zu "Problem mit einer Übung"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: niki1 - Xin - wirthi
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 8
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Problem mit einer Übung
  • Letzte Antwort: vor 16 Jahren, 4 Monaten, 14 Tagen, 4 Stunden, 8 Minuten
  • Alle Beiträge und Antworten zu "Problem mit einer Übung"

    Re: Problem mit einer Übung

    niki1 - 29.12.2007, 23:47

    Problem mit einer Übung
    Hallo,

    ich habe wiedermal ein Problem, ich habe jetzt versuchtein Programm zu schreiben das Fragt Wieviele verbraucher es gibt(Elektrotechnikprogramm), dann mit einer schelife die einzelnen widerstände einließt und sie dann zum schluss zusammenaddiert und als gesamt Widerstand ausgibt Code: #include<stdio.h>

    int main()

    {
       
      int i,anzahl;
      char anzahlR[6];
      float gesR;
      printf("Wieviele Verbraucher:\n");
     
      scanf("%d%*c",&anzahl);
     
      for(i=1;i<=anzahl;i+=1)
      {
        printf("R%d:",i);
        scanf("%s%*c",&anzahlR[i] );   
      }
     
     
      printf("%s",anzahlR[i]);
     
      gesR=0;
     
      for(i=0;i<=anzahl;i+=i)
      {
      gesR=gesR+anzahlR[i];                       
      }
     
      printf("gesR : %.2f",gesR);
       
       
       
     getchar();
     return 0;   
    }


    Doch irgendwie habe ich ein problem , er ließt zwar die widerstände ein doch weiter geht es auhc nicht.
    keine Ahnung wo der fehler liegt.
    Und noch eine frage wie mache ich das das Prgramm am ende nachfragt ob es schließen oder nochmal von neu beginnnen soll?

    Abend niki1



    Re: Problem mit einer Übung

    Xin - 30.12.2007, 02:34

    Re: Problem mit einer Übung
    niki1 hat folgendes geschrieben: Hallo,

    ich habe wiedermal ein Problem, ich habe jetzt versuchtein Programm zu schreiben das Fragt Wieviele verbraucher es gibt(Elektrotechnikprogramm), dann mit einer schelife die einzelnen widerstände einließt und sie dann zum schluss zusammenaddiert und als gesamt Widerstand ausgibt Code: #include<stdio.h>

    int main()

    {
       
      int i,anzahl;
      char anzahlR[6];
      float gesR;
      printf("Wieviele Verbraucher:\n");
     
      scanf("%d%*c",&anzahl);
     
      for(i=1;i<=anzahl;i+=1)
      {
        printf("R%d:",i);
        scanf("%s%*c",&anzahlR[i] );


    Du speicherst einen String (char []) in einem einzigen char. Das könnte Platzprobleme geben.

    Code: printf("%s",anzahlR[i]);
    Der GCC würde das hier vermutlich nur unter Anwendung von Gewalt kompilieren.

    Code:   for(i=0;i<=anzahl;i+=i)
      {
      gesR=gesR+anzahlR[i];                       
      }
    anzahlR sind Strings (char []), die in (char) gespeichert werden und hier als Float verbraten werden...

    Sourcecode kann man einrücken. Lass mich das anders formulieren. Wenn Du möchtest, dass ich Deinen Sourcecode aufmerksam lese, musst (MUSST! - nicht wie müsste/könnte/sollte) Du einrücken.

    niki1 hat folgendes geschrieben: Doch irgendwie habe ich ein problem , er ließt zwar die widerstände ein doch weiter geht es auhc nicht.

    Mich wundert, dass es überhaupt kompiliert. Welchen Compiler benutzt Du?
    Du hast Dich um so einiges an Typprüfungen herumgeschlichen, in dem Du scanf und printf beide veranalt hast und offenbar einen Compiler gefunden hast, der das Spiel mitspielt.

    Bitte beschäftige Dich mit Strings, bevor Du sie weiter verwendest. Schreibe Funktionen, um Strings zu verbinden, zu kopieren usw.
    C-Strings sind die Basis der Grundlagen in C und der Programmierung allgemein. Bevor Deine DNA statt aus Molekülstrings nicht aus C-Strings besteht, lohnt es sich nicht weiter programmieren zu lernen. Strings sind der Schlüssel zu allem.

    Bruce Lee hat folgendes geschrieben: A String can flow - or it can crash. Be a string, my friend.

    Ich bin sicher, Bruce Lee war im Herzen Informatiker, bekanntlich kann jedes 3D Grafik Programm, den berühmten Teapot darstellen. ;-)
    Solltest Du dieses berühmte Zitat nicht kennen, findest Du hier die korrekte Betonung, die es vermutlich so berühmt gemacht hat ;-): http://youtube.com/watch?v=OW-cnizLDEE)


    Du kannst Strings nicht wie Zahlen addieren - es sind nämlich keine Zahlen.

    niki1 hat folgendes geschrieben:
    Und noch eine frage wie mache ich das das Prgramm am ende nachfragt ob es schließen oder nochmal von neu beginnnen soll?

    Code:
    char nochmal;
    do
    {
      // programm

      nochmal = 0; // wenn beenden, sonst setze es irgendwie anders.
    }
    while( nochmal );


    Aus welchem Tutorial lernst Du?
    Bitte wirf alle Tutorials weg, die scanf enthalten.


    PS: Den 3D Teapod gibt's wirklich in (fast) jedem 3D Modelierungsprogramm, egal wie unsinnig er dort ist - er gehört dazu, hat aber einen ganz anderen Ursprung: http://de.wikipedia.org/wiki/Utah-Teekanne



    Re: Problem mit einer Übung

    wirthi - 30.12.2007, 13:12


    Teekanne? Bruce Lee? WTF? 8)



    Re: Problem mit einer Übung

    Xin - 30.12.2007, 13:40


    wirthi hat folgendes geschrieben: Teekanne? Bruce Lee? WTF? 8)

    Bruce Lee hat folgendes geschrieben: When a string flows into a teapot, it becomes the teapot.

    Das ganze Universum baut auf vermutlich auf Strings auf, noch nie was von der String-Theorie gehört?

    (Wenn nik1 alles durcheinanderwerfen darf, wieso sollte ich nicht dürfen?) :-B



    Re: Problem mit einer Übung

    niki1 - 30.12.2007, 14:42


    Xin hat folgendes geschrieben:
    (Wenn nik1 alles durcheinanderwerfen darf, wieso sollte ich nicht dürfen?) :-B

    Hehe.... stimmt , naja ich habe in der Schule gelernt, und einbisschen von diesen Tutorial auf dieser Seite.

    Welches Tutorial soll ich den lesen? Kennt ihr vll. ein gutes?

    Sagt Bruce Lee nicht : when water flow into a teapot , ... und nicht strings?

    was soll ich statt scanf() verwenden?

    mfg niki1



    Re: Problem mit einer Übung

    Xin - 30.12.2007, 15:10


    niki1 hat folgendes geschrieben: Xin hat folgendes geschrieben:
    (Wenn nik1 alles durcheinanderwerfen darf, wieso sollte ich nicht dürfen?) :-B

    Hehe.... stimmt , naja ich habe in der Schule gelernt, und einbisschen von diesen Tutorial auf dieser Seite.
    Ihr habt C in der Schule...? Das ist ja schonmal ein Fortschritt zu früher. Jetzt müssten die nur noch C aus diesem Jahrtausend lehren.

    niki1 hat folgendes geschrieben: Welches Tutorial soll ich den lesen? Kennt ihr vll. ein gutes?
    Ich kenne keins, ich habe zwar mal eins geschrieben, aber ich würde es nicht zwangsläufig als gut bezeichnen und habe mal angefangen es umzuschreiben. Dabei stellte ich fest, dass ich viel umschreiben muss... Der Kurs ist von '98, er ist inhaltlich korrekt (glaube ich... lange nicht mehr komplett durchgeguckt), aber didaktisch sicherlich nicht unbedingt auf der Höhe der Zeit.
    http://www.genesys.xsd.de/pages/ckurs/

    Ich unterrichte inzwischen auf einer theoretischeren Ebene, das braucht einen Moment länger, bevor man anfängt zu programmieren, dafür muss man imho aber weniger auswendig lernen, weil man das vorhandene Wissen einfach nur noch anwendet und kombiniert - so wie man auch programmieren sollte.

    Strings sind aber eine wichtige Grundlage, wenn ich unterrichte. Wer mit Strings jonglieren kann, hat die Grundlagen des Programmieren gelernt, sonst könnte er es nicht.

    niki1 hat folgendes geschrieben: Sagt Bruce Lee nicht : when water flow into a teapot , ... und nicht strings?
    Ich bin sicher, er meinte Strings. ;-)



    Re: Problem mit einer Übung

    niki1 - 30.12.2007, 15:20


    was soll ich statt scanf() verwenden?



    Re: Problem mit einer Übung

    Xin - 30.12.2007, 15:35


    niki1 hat folgendes geschrieben: was soll ich statt scanf() verwenden?

    Du kannst alle anfängerrelevanten Probleme auch ohne scanf lösen, teilweise sogar besser mit Parametern.

    $> addr 40 30 20 4711

    Hier sind 4 Widerstände, die Frage, wieviele es sind, musst Du gar nicht erst stellen. Auch musst Du sie nicht bei jedem Test eingeben, Du wiederholst einfach den vorherigen Befehl.

    Wie kommst Du an die Strings:

    Code:
    int main( int argc, char ** argv )
    {
      for( int i = 0; i < argc; i++ )
        printf( "Argument %d ist \"%s\"", i, argv[ i ] );

      return 0;
    }


    Entsprechend kannst Dir nun eine Funktion schreiben, die die Strings in integers oder floats wandelt und das dann addiert.
    Ich würde an Deiner Stelle mit ints anfangen.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    Pfadbezeichnung - gepostet von Moritz am Mittwoch 07.11.2007
    EXE-Dateien in Visual Pascal??? - gepostet von Robin21 am Sonntag 25.06.2006
    Frage zu Pascal - gepostet von Danny am Montag 12.03.2007
    untypisierte 1-byte variable - gepostet von Moritz am Freitag 14.12.2007
    Spiel geht nicht - gepostet von Moritz am Sonntag 04.11.2007
    Textdatei - Zufallszeile auslesen. - gepostet von Bene am Freitag 28.07.2006
    C-Programm aus C-Programm starten ??? - gepostet von Stevox am Mittwoch 13.12.2006
    FAQ - gepostet von Dragorad am Donnerstag 29.03.2007
    Problem - gepostet von C-Chris am Dienstag 30.10.2007



    Ähnliche Beiträge wie "Problem mit einer Übung"

    Übung gasaustritt im feuerwehrhaus - jamal-jefferson (Donnerstag 06.04.2006)
    Regeln zum schreiben einer Bewerbung - mitsurugi (Sonntag 09.01.2005)
    Wir haben ein Problem!!! - Langi (Freitag 09.11.2007)
    5.übung salze - Chris (Sonntag 16.12.2007)
    wie wäre es mit einer Lyricssektion? - Tahu (Sonntag 18.09.2005)
    Hassu N Problem ????? - Anonymous (Montag 13.12.2004)
    schon das erste problem.... :-( - jonnyb (Donnerstag 21.06.2007)
    Ein PC NooB hat ein Sound Problem - Vergil (Mittwoch 31.10.2007)
    Problem - Dragonfly (Samstag 21.07.2007)
    ja hier is noch einer ;o) - missendless (Montag 01.05.2006)