C C Programm schreiben - der Anfang fehlt

Status
Für weitere Antworten geschlossen.

SindyAlina

Newbie
Registriert
Nov. 2013
Beiträge
6
Wir haben eine Aufgabe, wo ich keinerlei Anfang finde..wir sollen darüber ein Programm schreiben...aber ich komm einfach nicht auf den Anfang...dazu muss ich sagen, ich bin weiblich und blond :D

Vll kann mir hier einer helfen...

Die Umwandlung einer gebrochenen positiven Dezimalzahl der Form 0.f..f in eine Zahl mit Basis b (2<=b<=36) soll als Algorithmus formuliert werden.
Im Algorithmus sollen der Bruch d, die Basis b und die Anzahl der Nachkommastellen im Zielsystem eingerichtet und auf d>=0 und 2<=b<=36 getestet werden.
Die Speicherung der Ziffern der umgewandelten Zahl soll in einem Vektor in Form von ASCII-Zeichen erfolgen.
Der Vektor soll ausgegeben werden.
 
So weit bin ich schonmal ...

Unbenannt.jpg
 
Fang mal mit nem Menü an, wo man die Einstellungen setzen kann. Benenn deine Variablen sprechend und schreibe dann nach und nach Funktionen, die je eine Aufgabe erfüllen. Als kleiner Anfang:

Code:
#include <stdio.h>

int main(int argc, char ** argv) {
    int base
      , precision
      , counter
      , denominator
      , input;

    /* Hauptmenue */
    while(1) {
        printf("Option auswählen\n");
        printf("1. Nachkommastellen eingeben\n");
        printf("2. Basis eingeben\n");
        printf("3. Bruch eingeben (mit / als Trennzeichen)\n");
        printf("x: Beenden\n");

        scanf("%i", &input);

        switch(input) {
            case '1': /* Nachkommastellen einlesen */
                scanf("%i", &precision);
                break;
            case '2': /* Basis einlesen */
                scanf("%i", &base);
                break;
            case '3': /* Bruch einlesen */
            case 'x': return 0;
        }
    }
    return 0;
}
 
Zuletzt bearbeitet:
Das is nur ne Aufgabe von solchen Übungsblättern die wir für die Uni bekommen haben...

Wir sind aber im Stoff noch ni so weit, wie du das da geschrieben hast...sind bisher nur bei int, float, printf, scanf, if, char...mehr haben wir noch nicht gelernt..
 
kingler, da steht einerseits gleitkommazahl, andererseits gebrochen rational. Die lassen sich halt am besten durch Zähler und Nenner darstellen, sonst kriegt man Rundungsfehler

EDIT: Darf ich fragen, was du studierst? Ingenieursbereich oder was in Richtung Informatik/Medien?
 
Ich habe im Oktober mit Wirtschaftsinformatik angefangen, wir sind in der Praxis nur viel weiter als in der Theorie und dadurch verstehen wir die meisten Übungsaufgaben immer erst drei Vorlesungen später.
 
Ah okay, sowas passiert leider. Dein Ansatz fängt schon richtig an. Versuch einfach, keine Funktionalitäten zu vermischen. Am besten überlegst du dir erstmal abstrakt, welche Funktionalitäten du haben musst und schreibst dafür Funktionssignaturen (z.B. "SomeType convertToBase(int base, int counter, int denominator);"). Wenn du die alle meinst zu haben, fang an, sie zu implementieren.

Genrell ist es hilfreich, soviel Arbeit wie möglich in Funktionen auszulagern, das macht deinen Code sehr viel übersichtlicher hinterher

Ach wegen dem switch:

das ist im prinzip die effiziente variante einer if-then-else kette. man hätte auch cshreiben können:

if( input == '1') {
...
} else if(input == '2') {
...
}

Es ist genau das, was da steht: Verzweife über den Wert von input: wenn er '1' ist, mach dies, wenn nicht, gehe weiter. wichtig ist nur, dass man nach den befehlen für einen case ein "break;"-Statement setzt, weil sonst alle nachfolgenen Anweisungen im Switch trotzdem ausgeführt werden
 
Zuletzt bearbeitet:
Dann würde ich es so einfach wie möglich halten. Einfach nacheinander die Werte einlesen, dann berechnen und ausgeben. Hast du da ein konkretes Problem?
 
Ja, das mit dem denominator und dem counter hatten wir eben noch nicht..ich glaub dann dürfen wir das auch gar ni verwenden..is mir iwie alles zu hoch ^^
 
denominator und counter sind nur meine gewählten variablennamen (englisch für nenner und zähler). man sollte variablen nach ihrer verwendung benennen. ich möchte also zähler und nenner getrennt als ganze zahlen verwalten.

was die syntax da angeht: man kann mehrere variablen auf einmal per komma getrennt deklarieren.
 
Zuletzt bearbeitet:
Man kann sich in nem Studium auch ruhig mal selbst was aneignen ohne es vorher vorgekaut zu bekommen.

Schreib doch erstmal in Worten/Pseudocode auf wie das Programm arbeiten soll. Nachdem du so einen Ablauf hast musst du ihn ja nur noch in Programmcode umsetzen. Dabei helfen wir natürlich auch gerne wenn du auf Probleme stößt, aber die Vorarbeit musst du schon selbst bewältigen.
 
Mit ASCII wird der Datentyp char gemeint sein, da du für Zahlensysteme mit Basis >10 wahrscheinlich Buchstaben zu den Ziffern verwenden sollst, wie bei hexadezimal. Und mit Vektor wird ein array gemeint sein.

Insgesamt ergibt das ein nullterminiertes char array, das ANSI C Äquivalent des String Datentyps
 
Wenn OP sagt ich bin ein blondes Mödchen kicherwimperklimper ist es plötzlich ok, seine Hausaufgaben für ihn zu machen? Hätte ich das mal früher gewusst.
 
Auch für blond und Uni gilt die Hausaufgabenregel.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben