Schaltungsrechner

Tutorials.at
Verfügbare Informationen zu "Schaltungsrechner"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: niki1 - CRASH - Dirty Oerty - exbs - DrPhil_Guth
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 25
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Schaltungsrechner
  • Letzte Antwort: vor 17 Jahren, 1 Monat, 19 Tagen, 4 Stunden, 20 Minuten
  • Alle Beiträge und Antworten zu "Schaltungsrechner"

    Re: Schaltungsrechner

    niki1 - 25.02.2007, 16:51

    Schaltungsrechner
    Hallo,

    ich hab eine Frage, ich lerne grade in der schule c, und will ein programm schreibn , das mir eine je nach dem eine serien schaltung oder eine parallel schaltung ausrechnet,

    so mein problem ist , das ich nicht weiß wie ich das machen soll,



    printf("Was fuer eine Schaltung?");

    printf("Parallel\n oder in \nSerie?");
    \\ Jetzt sollte man im Dos-Fenster hinschreiben können , Parallel oder Serie , und je nach dem soll es was ausrechnen \\

    aber wie mach ich das?

    mit getchar() befehlen oder wie ?

    mfg niki1



    Re: Schaltungsrechner

    CRASH - 25.02.2007, 17:03

    Re: Schaltungsrechner
    wolte das auch mal machen.also so könnte es gehn.du deklarierst 2 char variablen.wie die heissen is egal.iner ner printf forderst du dann auf eine eingabe zu tätigen..mit scanf weisst du den variablen dann nen wert zu,machst ne if anweisung und das prob müsste gelöst sein(nicht wahr?).dann machste halt mit dem üblichen weita.also wieviele ohmwiderstände,wie groß usw.


    die reihenschaltung würd ich weg lassen da das jeder b00n kann.das gesetzt lautet ja bei n gleichen widerständen ergibt der gesamtwiderstand die summer der einzelwiderstände.
    lieber würde ich das so machen das gefragt wird ob es sich um eine parallelschaltung mit N gleichen widerständen handelt oda mit einer P-schaltung mit unterschiedlich grossen widerständen.



    Re: Schaltungsrechner

    niki1 - 25.02.2007, 17:29


    hm.. ich versuch es mal ,

    ich hab jetzt begonnen es zu schreibn, aber irgendwas ist da falsch !!

    int main()
    {

    char parallel, serie, eingabe,eingabe1,eingabe2,Ausgangsspannung,I,R2,R1;
    float u,u1, i, r1,r2;
    printf("Was fuer eine Schaltung?\n");

    printf("Parallel\noder in\nSerie?");
    scanf("%c%*c",& eingabe);

    if(eingabe==parallel)

    {
    printf("Geben sie ihre Eingangsspannung ein:");
    scanf("%f%*c",&u);
    printf("Was wollen sie ausrechnen?");
    printf("\nAusgangsspannung\nR2\nR1\nI\n?");
    scanf("%s%*c",&eingabe1);

    if(eingabe1==Ausgangsspannung)
    {
    printf("Geben sie ihren R1 ein:");
    scanf("%f%*c",&r1);
    printf("Geben sie ihren R2 ein:");
    scanf("%f%*c",&r2);
    printf("Geben sie ihren U1 ein");
    scanf("%f%*c",&u1);
    }


    }



    getchar();
    return 0;

    }

    Wenn ich es starte, und dann eingebe parallel , schaltet es sich aus aber warum?



    Re: Schaltungsrechner

    CRASH - 25.02.2007, 17:39


    was ich da lese lol.
    du hast nur zahlen initialisiert und keine rechnungen durchgeführt.der pc muss doch wissen was er rechnen muss.
    naja du hast keine anweisung nach dem IF.nach IF folgt eine anweisung d.h wenn die bedingung erfüllt wurde kannst du sowas machen

    if (eingabe == blabla) printf ("bedingung erfüllt")



    Re: Schaltungsrechner

    niki1 - 25.02.2007, 17:47


    int main()
    {

    char parallel, serie, eingabe,eingabe1,eingabe2,Ausgangsspannung,I,R2,R1;
    float u,u1, i, r1,r2;
    printf("Was fuer eine Schaltung?\n");

    printf("Parallel\noder in\nSerie?");
    scanf("%c%*c",& eingabe);

    if(eingabe==serie)

    {
    printf("Geben sie ihre Eingangsspannung ein:");
    scanf("%f%*c",&u);
    printf("Was wollen sie ausrechnen?");
    printf("\nAusgangsspannung\nR2\nR1\nI\n?");
    scanf("%s%*c",&eingabe1);

    if(eingabe1==Ausgangsspannung)
    {
    printf("Geben sie ihren R1 ein:");
    scanf("%f%*c",&r1);
    printf("Geben sie ihren R2 ein:");
    scanf("%f%*c",&r2);
    printf("Geben sie ihren U1 ein");
    scanf("%f%*c",&u1);
    printf("Ihre Ausgangsspannung ist:%.2fV",(u1*r2)/r1);
    }


    }



    getchar();
    return 0;

    }


    so ich hab im noch die rechnung reingeschriebn,.. und was jetzt? Trotzdem schaltet er sich aus wenn ich serie reinschreib



    Re: Schaltungsrechner

    CRASH - 25.02.2007, 18:07

    Re: Schaltungsrechner
    ja dann versuch mal das hier

    deklarier die variable "char taste"

    dann füg an ende deines quellcodes das ein

    Code:
    do
    {
    getch(taste);
    }while(taste != 'x');


    entfernt vorher das getchar(); und return 0;



    Re: Schaltungsrechner

    niki1 - 25.02.2007, 18:14


    geht trotzdem nicht!?!?

    mfg niki1



    Re: Schaltungsrechner

    Dirty Oerty - 25.02.2007, 18:49


    return 0 muss scho dableiben, is ja die "scließanweisung"

    und weiter:

    so wird dein prog nich funktionieren, egal was du eingibst, keine der if bedingungen wird erfüllt sein.

    und zwar

    du (versuchts es) vergleichst den string eingabe mit dem string serie.

    ok. was steht in serie? nichs, du hast da noch nix reingeschreiben.

    also müsstest du nix in eingabe eingeben, damit die bedingung wahr is.


    dann zur art des vergleichens:

    das geht nich, 2 zeichenketten mit == zu vergleichen

    achja, fast vergessen: die zeile

    Code:
     char parallel, serie, eingabe,eingabe1,eingabe2,Ausgangsspannung,I,R2,R1;


    reserviert speicher für genau 9 buchstaben. einen für "paralle", einen für "serie" etc.

    du kannst also schreiben was du willst.

    ob du dann

    "abba"
    "altersheim"

    schreibst kommt aufs gleiche raus.
    und zwar auf ein 'a'.

    also, nich böse sehn, aber les dir nochmal nen tutorial durch.

    mfg
    daniel



    Re: Schaltungsrechner

    exbs - 25.02.2007, 20:39


    auf EIN char geht KEIN ganzes wort (besser string), sondern nur EIN char. du musst bei der deklaration ein char-array anlegen.

    Code: char eingabe[9]; = platz für 9 zeichen.

    und wenn du unbedingt einen string vergleichen willst, dann benutzt die funktion "strcmp".

    Code: if (strcmp(DEINE_VARAIBLE, "DEIN_STRING") == 0)

    Zitat: return 0 muss scho dableiben, is ja die "scließanweisung" nja, muss net sein ... schliessen wird es sich auch ohne. Code: return 0; gibt einfach nur an das systemzurück ... ALLES KLA



    Re: Schaltungsrechner

    Dirty Oerty - 25.02.2007, 23:23


    jup, aber return werte sind denk ich ja zu was gut (das hattn ma ja schon mal, mit den return werten von programmen).

    ich schreibs mit hin.



    Re: Schaltungsrechner

    niki1 - 27.02.2007, 23:57


    aha, danke,

    ja war ein großer denkfehler , is ja kein wunder das es sich schließt!?!?
    XD

    wenn ich ja nix drinnen hab das erfüllt werden kann, aber eigentlich wollte ich ja unterbefehle machen , und zwar , erster fragt er mich was für ne schaltung es ist , und dann geht man immer tiefer rein , je nach dem was man sich ausrechnen wil, sollte man eine zahl eingabe zb 1, 2, 4 usw.

    aber wie soll ich das machen ?
    versucht hab ich es ja schon mit den if unterbefehlen...
    mfg niki1



    Re: Schaltungsrechner

    Dirty Oerty - 01.03.2007, 14:47


    nunja, das sollte schon mit if gehn.
    besser sind noch switch-case-anweisungen.



    Re: Schaltungsrechner

    niki1 - 01.03.2007, 15:26


    ja wie geht das?


    kannst du mir ein Bsp; geben?
    mfg niki1



    Re: Schaltungsrechner

    CRASH - 01.03.2007, 15:50

    Re: Schaltungsrechner
    Code:
    #include <stdio.h>
    #include <conio.h>

    int main()
    {
    int eingabe;
    printf ("Geben Sie einen Wert ein: ");
    scanf ("%d",&eingabe);
    switch (eingabe)
      {
      case 1: printf ("Sie haben eins eingegeben.");
              break;
      case 2: printf ("Die Eingabe war zwei.");
              break;
      case 3: printf ("Drei wurde eingegeben.");
              break;
      default: printf ("Es wurde etwas anderes angegeben.");
      }
    getch();
    return 0;
    }


    nochmal zu erläuterung:
    Code:
    switch (Ausdruck)
      {
      case Wert_1: Anweisungen;
                        break;
      case Wert_2: Anweisungen;
                        break;
      .
      .
      .
    [default: Anweisungen;]
      }

    Nach switch wird in Klammern die Variable angegeben, dessen Wert überprüft werden soll. Je nachdem, welchen Wert sie enthält sollen unterschiedliche Dinge getan werden. Was getan werden soll, steht im entsprechenden case-Zweig. Der Wert nach case ist die entsprechende Bedingung. Ist sie erfüllt, so wird das, was nach dem ihr folgenden Doppelpunkt steht, ausgeführt. Der Wert muss vom Typ int sein. (bzw. einem kompatiblen, also einem Wert, der sich als int darstellen lässt) Wichtig ist, dass nach der Anweisung/den Anweisungen eine break;-Anweisung folgt. Stünde sie denn nicht an dort, so würde alles ab dieser Stelle ausgeführt werden. (das heißt, auch die Anweisungen, die zu den anderen case - Zweigen gehören. break sorgt dafür, dass der aktuelle Anweisungsblock beendet wird. (später werden Sie noch so manches dazu hören) Merken Sie sich im Moment einfach nur, dass in jedem case - Zweig nach den Anweisungen ein break; folgen muss. Eine Sonderstellung nimmt der default - Zweig ein. Ist nämlich der Wert ein anderer als alle angegebenen, so werden die Anweisungen im default - Zweig ausgeführt(Quelle:www.tutorials.at)



    Re: Schaltungsrechner

    niki1 - 01.03.2007, 16:16


    ja das weiß ich eh , aber ich will das in einem if oder switch befehl , wieder etwas auswählen kannzB,

    if(eingabe==1)
    {
    printf("Wollen sie a[2] oder b[3] ausrechnen");
    scanf("%i%*c",& eingabe 2);

    if(eingabe==2)
    {
    printf(............blabla);
    }
    sowas in der art!aber das funktioniert nicht



    Re: Schaltungsrechner

    CRASH - 01.03.2007, 16:34


    was du willst ist egal.was du kannst ist besser oO



    Re: Schaltungsrechner

    Dirty Oerty - 01.03.2007, 17:47


    warum sollte das nich gehn?
    natürlich geht das, in deinem bsp fehlt nur nen klammer hinten.

    mal nen bsp:

    Code:

    if (eingabe==1)
    {
       printf("blabla");
       //dann scanf, weiß aber nich merh des ganze mit den %d etc. ;)
       if (eingabe==4)
       {
          //wieder was mit scanf
          switch (eingabe)
          {
             case 1: //blabla
             case 2: //blabla
             case 3: //blabla
             default: break;
          }
       }
    }



    Re: Schaltungsrechner

    niki1 - 01.03.2007, 18:38


    CRASH hat folgendes geschrieben: was du willst ist egal.was du kannst ist besser oO


    *kopfschüttl*

    ,

    danke Dirty Oerty ich werds mal versuchen!?
    mfg niki1



    Re: Schaltungsrechner

    niki1 - 01.03.2007, 19:47


    Code: #include <stdio.h>
    #include <conio.h>

    int main()

    {
        char  e;
        float rp,r1,r2;
        char p,s,A,I,R,a;
        printf("Wollen sie Serien[s] oder Parallel[p]-Schaltung berechnen??");
        scanf("%c%*c",&e);
       
        switch(e)
        {
       
        case 'p':         printf("Geben sie ihre Widerstände ein\n\n");
                          printf("R1;");
                          scanf("%f%*c",&r1);
                          printf("R2;");
                          scanf("%f%*c",& r2);
                          printf("Ihr Rp ist;%.2f Ohm\n\n",(r1*r2)/(r1+r2)); 
                          break; 
                         
        case 's':         printf("Was wollen sie ausrechnen,Ausgansspannung[A],Strom[I],ges.Widerstand[R]");
                          scanf("%c%*c",a);

    [i][u][b]//hier weiß ich nimma weiter!!!!! muss ich noch ein case befehl machen oder wie??
    [/b][/u][/i]

    }
        getch();
        return 0;
    }
    [/i][/b][/code]



    Re: Schaltungsrechner

    DrPhil_Guth - 01.03.2007, 20:18


    ...
    Wie genau willst du mit scanf 2 werte in einen einlesen? Das sind genau die fälle, wo klar wird dass scanf eigentlich als deprecated eingestuft werden sollte. Denn es gibt weder compilerfehler, noch einen programmabsturzt. Nur extrem seltsames verhalten...

    mithilfe von scanf liest man so ein:

    int variable;

    scanf ("%d", &d);

    Was genau sollte deine syntax eigentlich bewirken?


    so sieht ne richtige switch anweisung aus:

    int variable;

    switch (variable)
    {
    case 1:
    /* diverse anweisungen */
    break;
    /* break bedeutet, dass in der switch anweisung nicht mehr weitergegangen wird.
    sonst würde auch der code aus dem zweiten teil ausgeführt werden, selbst wenn nur das erste zutrifft. */

    case 2:
    /* weitere anweisungen */
    break;
    default: /* wird dann aufgerufen, wenn keines der oben genannten fälle zutrifft.*/
    /* anweisungen */
    break;
    }



    Re: Schaltungsrechner

    Dirty Oerty - 01.03.2007, 23:23


    :D deswegen programmier ich C++....



    Re: Schaltungsrechner

    DrPhil_Guth - 02.03.2007, 14:36


    *lol*...
    Ja hast recht. C++ ist manchmal viel einfacher und sicherer. Wie eben im falle von scanf()/cin



    Re: Schaltungsrechner

    exbs - 05.03.2007, 01:29


    Zitat: scanf("%f%*c",&r1); wenn du in einer scanf-anweisung mehrere werte einlesen willst, dann musst du auch eine zweite variable als ziel angeben.
    Code: scanf("%c%d", &zeichen, &zahl); so zum bsp.
    > sonnst wüsst ich auch net was du damit bezwecken willst, evtl lies liber nochmal das kapitel in dem tutorial deines vertrauns ;) ...

    ach ja den puffer vor der der scanf-anweisung zu leeren wäre in deinem fall sicher ratsam:
    Code:
    setvbuf(stdin,NULL,_IONBF,0);
    setvbuf(stdin,NULL,_IOFBF,BUFSIZ);



    Re: Schaltungsrechner

    CRASH - 05.03.2007, 17:36


    meintet ihr net mal scanf () wäre von grundauf schlecht?oO

    also like:
    Code:
    char buffer[128]

    deklarieren
    und dann anstelle von scanf immer
    Code:
    fgets (buffer, 128, stdin);
    sscanf (buffer, "%d", &DeineVariable);

    einfügen.

    net wahr?
    wird doch direkt gelert oda so ne? xD



    Re: Schaltungsrechner

    exbs - 05.03.2007, 21:34


    wenn dann erstmal fgets.

    scanf ist nicht von grundauf falsch, du kannst ja den puffer leeren. natürlich wenn auch die andere variante sauberer ist, auch wenn man natürlich zum bsp ein unschönes '\n' am ende des strings hat.

    nur gellert wird dort nix ... puffer ist und bleibt im speicher vorhanden. ergo ineffektiev. du könntest natürlich speicher allokieren und dann mit free wieda freigeben. das ist möglich.



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



    Weitere Beiträge aus dem Forum Tutorials.at

    @Walgo - gepostet von Xin am Samstag 21.07.2007
    Compiler? - gepostet von Thunderbird am Montag 03.07.2006
    Moderatorenrunde - gepostet von Dragorad am Dienstag 10.04.2007
    Tipps? - gepostet von CRASH am Samstag 21.10.2006
    Wurzelberechnung - gepostet von Kimi am Samstag 17.11.2007
    Turbo C Problem! (Umfrage nur nebenbei) - gepostet von ChillerT am Dienstag 06.02.2007



    Ähnliche Beiträge wie "Schaltungsrechner"