Aufgabe in C

S

Skydream

Grünschnabel
Ich habe eine Aufgabe.

Ich sollte die Sternzeichen z.B (22.12 - 20.01 Steinbock oder 20.02. - 20.03 Fisch) finden in meinem Programm einlesen in dem ich die Tage und Monat eingebe und auch in Tag im Jahr finden, soll ich auch die Tage und Monate hinschreiben und gibt mir in Tag im Jahr an.

Ich habe ein Programm gemacht. Ich möchte die Sternzeichen und im Tag im Jahr in meinem Programm anpassen.
Code:
#include <stdio.h>
#include <string.h>
#include <conio.h>

void Sternzeichen(int s);
void Tag(float a, float b, float c);
void Chinesisch(float b, float h);

main() //main für variablen speichern und dann berechnen
{
 char ch;
 float a, b, c, d,;
 int si;

  do     //Beginnt zu arbeiten
  {
   printf("--A S T R O --------------\n"); //Mein Name und Programmname
   printf("\na> Sternzeichen finden\n");        //Hauptmenuspunkte
   printf("b> Tag im Jahr finden\n");
   printf("c> Chinesische Sternzeichen > Funktion zum Testen\n");
   printf("d> Beenden");

    printf("\n\n*Waehlen Sie den gewuenschten Buchstaben:");
    scanf("%d", &ch);

switch(ch)          //Liest schon mit Switch und ich habe es mit case gemacht.
    {
        case 1:
        printf("Geben Sie den Tag ein <ganze Zahl>:\n");
        scanf("%f", &a);
        printf("Geben Sie den Monat ein <ganze Zahl>:\n");
        scanf("%f", &b);
        printf(".....Berechnung laueft.......");
        Berechnung (a, b);
        break;
        default:
        printf("ERROR!!!!!Die Nummer ist nicht in der Liste!!!");
        break;

	case 2:
        printf("Geben Sie den Tag ein <ganze Zahl>:\n");
        scanf("%f", &a);
        printf("Geben Sie den Monat ein <ganze Zahl>:\n");
        scanf("%f", &b);
        printf(".....Berechnung laueft.......");
        Berechnung2 (a, b);
    scanf("%d", &ch);
	break;

	case 3:
	printf("\n\t---A S T R O -- C H\n");
    printf("\n\n\t\t**Umfang und Fl\204che von regelm\204ssiger geometrischer Figuren**\n\n");// ASCI-Code ä= \204, Ä=\216, ö=\224, Ö=\231, ü=\201, Ü=\232
	printf("a> Chinesissches Sternzeichen finden\n");
    printf("b> Bedeutung Chinesisches Sternzeichen\n");
    printf("c> Beenden, zurueck zu Haupmenue\n");
	printf("\nW\204hle die oberen Nummmer aus:");
    scanf("%d", &ch);
	 switch(ch)
	{
	 case 1:
     printf("\n\n\t\t**Dreieck**\n\n");
    printf("Geben Sie den Tag ein <ganze Zahl>:\n");
    scanf("%f", &a);
    printf("Geben Sie den Monat ein <ganze Zahl>:\n");
    scanf("%f", &b);
    printf("Geben Sie das Jahr ein <ganze Zahl>:\n");
    scanf("%f", &c);
    Berechnung3 (a, b, c);
    scanf("%d", &ch);
	break;

		case 2:
        printf("Geben Sie Ihr Chinesisches Sternzeichen ein <Keine Umlaute>:\n");
        scanf("%f", &a);
        Berechnung4 (a);
    scanf("%d", &ch);
	break;

	case 3:
	Out (a);
	    scanf("%d", &ch);
	break;

	}

	case 4:
	printf("\n\t*****Jaeson-Roxas, Geometrie_Welt, 2011-12-23*****\n");
    printf("\n\n\t\t**Umfang und Fl\204che von regelm\204ssiger geometrischer Figuren**\n\n");// ASCI-Code ä= \204, Ä=\216, ö=\224, Ö=\231, ü=\201, Ü=\232
	printf("\t\t(1) Dreieck\n");
    printf("\t\t(2) Rechteck\n");
    printf("\t\t(3) Quadrat\n");
    printf("\t\t(4) Kreis\n");
    printf("\t\t(5) Parallelogramm\n");
    printf("\t\t(6) Rhombus\n");
    printf("\t\t(7) Trapez\n");
	printf("\nW\204hle die oberen Nummmer aus:");
    scanf("%d", &ch);
	break;



}
  }
    while(getch() != 'd');
}



void Berechnung(float a, float b, float c)
{
  int p;
  p = a + b + c;
  printf("\n\t\tSternzeichen %f", p);
}

void Berechnung2 (float a, float b)
{
  float w;
  w = (a * b) / 2;
  printf("\n\t\tTag im Jahr %f", w);
}

void Berechnung3 (float a, float b, float c)
{
  float x;
  x = (a * b * c) / 2;
  printf("\n\t\tTag im Jahr %f", x);
}

void Berechnung4 (float a, float b, float c)
{
  float x;
  x = (a * b * c) / 2;
  printf("\n\t\tTag im Jahr %f", x);
}

void Out (int a)
{
    system("cls");
    printf("Unterprogramm wird beendet....");


}

Voraus Mal Danke.
 
... und jetzt bitte nochmals in Deutsch und auf verständlich...
 
Ich hab auch keine Ahnung, was du machen willst, aber wenn ich mir dein Programm so ansehe fallen mir schon etwas optimierungspotenital auf.

  • main hat den Datentyp int, und die Argumente (int, char**), in deinem Fall defaultet kein Datentyp auf int dun das Argument () ignoriert einfach alle eingaben, aber sauber ist es nicht.
  • Bitte rück die Zeilen ordentlich ein (hint: in vim "ggvG=")
  • Wenn du mehrere Zeilen mit printf ausgibst kannst du den Programmablauf marginal beschleunigen und vor allem den sourcecode viel leichter lesbarer machen, indem du statt dem was du geschrieben hast
    Code:
    printf(  "--A S T R O --------------\n"                        \  //Mein Name und Programmname
             "\na> Sternzeichen finden\n"                          \  //Hauptmenuspunkte
             "b> Tag im Jahr finden\n"                             \
             "c> Chinesische Sternzeichen > Funktion zum Testen\n" \
             "d> Beenden"                                          \
             "\n\n*Waehlen Sie den gewuenschten Buchstaben:");
  • Code:
     scanf("%d", &ch);
    pfui
    Du liest dein char als dezimalzahl ein, wovon ich dir abraten würde. Wenn jemand eine Zahl von größer 128 hinschreibt halt ichs für möglich, dass du einen sagfault bekommst. Wenn du mit scanf characters einlesen willst verwend "%c", oder gleich getchar() bzw fgetc(stdin).
  • Wenn du ganze Zahlen einlesen willst verwend scanf mit "%d", oder "%i", "%f" steht für floating point und liest dir Gleitkomma Zahlen ein
  • vermeide solche klingenden Namen wie "Berechnung1", "Berechnung2" usw
  • Code:
    system("cls");
    wieso postest du ein Programm ins unixboard, dass offensichtlich für Windows geschrieben wurde und in einem Posix system nicht richtig funktionieren würde
 

Ähnliche Themen

C Code Hilfe!!! gesucht bei Dezimalzahl in Binärzahl for loop

ip6tables Problem

CentOS 5.8 –SQL Abfrage– HTML wird generiert und daraus müssen mehrere Mails versendet werden

iptables und whitelist

Prozesskommunikation mit PIPES - wie funktioniert das?

Zurück
Oben