C neuling braucht dringend hilfe!!



  • hi@all,

    habe folgende probleme:

    1. ich soll einen rechner programmieren, der berechnungen mit Dezimalzahlen und den Rechenarten: +, -, /, % Modulo (Rest einer Ganzzahl-Division), * durchführen kann. Die Ausgabe soll so aussehen:

    Anfangszahl eingeben: 3
    = 3.000000 + 4
    = 7.000000 - 15
    = -8.000000 / 1.3
    = -6.153846 % 4
    = -2.000000 * -5
    = 10.000000 =
    = 10.000000

    bedingungen: Eingaben (auch Zahlen) sollen über die Funktion gets() vorgenommen werden. es soll auch keine fehlerprüfrotine enthalten sein.
    Programmende ist bei eingabe des gleichheitszeichen.

    2. Die 4 Klassen des 8. Schuljahres einer Schule haben bei einem Mathematikwettbewerb unterschiedliche Ergebnisse erzielt. Es galt, insgesamt fünf Aufgaben mit unterschiedlicher Bewertung zu lösen:

    Aufgabe 1: 3 Punkte

    Aufgabe 2: 2 Punkte

    Aufgabe 3: 1 Punkte

    Aufgabe 4: 2 Punkte

    Aufgabe 5: 3 Punkte

    Welche Klasse hat nun das beste Ergebnis erziehlt, wenn folgende Zahl an Aufgaben in den einzelnen Klassen richtig gelöst wurden:

    Aufgabe Nr.:

    1 2 3 4 5

    Klasse 8a: 3 15 10 30 14

    Klasse 8b: 16 12 12 24 8 Zahl der gelösten

    Klasse 8c: 8 5 15 20 20 Aufgaben je Klasse

    Klasse 8d: 10 8 14 10 25

    Bedingungen: Die Zahl der gelösten Aufgaben in einer Matrix_A.
    Die Gewichtung der einzelnen Aufgaben in einer Matrix_B.
    Zugriff auf die Elemente der Arrays durch Zeiger mit folgenden Namen:

    Zugriff auf Zahl der gelösten Aufgaben durch Zeiger: *z_matrix_a
    Zugriff auf Punkte je Aufgabe durch Zeiger: *z_matrix_b
    Zugriff auf die Ergebnisse je Schulklasse durch Zeiger: *z_ges_pkt
    Zählervariablen: a; k
    weitere Variablennamen sind nicht zulässig
    überall dort wo es möglich ist soll mit schleifen gearbeitet werden

    ich hoffe das ganze ist kein problem für euch denn ich hab mich damit jetzt 2 Monate befasst und bin trotzdem nicht dahinter gestiegen.



  • Eines sollte dir klar sein: Wir lösen keine kompletten Aufgaben für dich!

    Du kannst gerne erläutern wo es bei dir hackt und dabei hilft man dir bestimmt gerne. Aber keiner wird dir deine komplette Aufgabe lösen.

    Also wo liegt dein Problem bei der ersten Aufgabe? Was hast du schon gemacht?



  • okai,

    1. umwandlung mit gets()und sscanf() klappt, einlesen über scanf von gewünschten rechenzeichen klappt auch aber sobald sie zusammen verwendet werden kommt müll raus!

    2. pointer auf eindimensionale arrays kann ich setzen aber auf mehrdiemensonale arrays klappt nich!

    ich verwende gcc3.2 unter knoppix 3.3



  • zu 1. Wie sieht dein "zusammen verwenden" aus?

    zu 2. Wie sieht die Deklaration deines Arrays aus und wie verwendest du das Array im Quellcode?



  • also zusammen heist:

    #include <stdio.h>

    int main(void)
    {
    float zahl1, zahl2, ergebnis;
    char var1, var2[10], var3[10], ende;

    do
    {
    printf("eingabe, ende mit '='");
    gets(var2);
    sscanf(var2, "%9f", &zahl1);
    scanf("%c",&var1);
    gets(var3);
    sscanf(var3, "%9f", &zahl2);
    printf("%15.7f %c %15.f", zahl1, var1, zahl2);
    switch(var1)
    {
    case '+' : ergebnis = zahl1 + zahl2; break;
    case '-' : ergebnis = zahl1 - zahl2; break;
    case '/' : ergebnis = zahl1 / zahl2; break;
    case '*' : ergebnis = zahl1 * zahl2; break;
    }
    printf(" %f\n",ergebnis);
    }while (ende != '=');
    printf(\n\n");
    return 0;
    }



  • Gut, dann gleich mal mein 1. Tipp: Verwende anstatt float lieber double, zumindest für das Ergebnis.
    Außerdem sollte man gets() vermeiden und stattdessen fgets() mit stdin verwenden, da man damit keinen Bufferoverflow machen kann. Überleg mal was passiert, wenn jemand beim Eingeben der Zahl auf die Idee kommt und mehr als 9 Zeichen eingibt.

    Ansonsten sieht es ganz gut aus. Ich frag mich nur, wann du ende einliest 😉

    Was waren eigentlich deine bisherigen Testdaten und was für Ergebnisse hast du erhalten?



  • hallo!ich habe das selbe problem wie du:-)das mit dem taschenrechner haut bei mir auch nicht hin...das mit der schulklasse hab ich allerdings hinbekommen ist nicht so schwer finde ich...


Anmelden zum Antworten