WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   c noob frage (http://www.wcm.at/forum/showthread.php?t=116936)

porli 27.11.2003 22:02

c noob frage
 
also ich hab da es programm...

und da will ich wenn er 1 eingibt das unterprogramm für die berechnung der quadratischen aufrufen!
aba ich weiß nicht genau warums nicht geht es passiert genau gar nix, wenn ma eins drückt!

Code:

#include <stdio.h>
#include <conio.h>
#include <math.h>
float unterwurzfkt(float vara,float varb,float varc,float unterwurz);
float komplexeloesungen(float vara,float varb,float varc,float erg2);
float reelleloesungen(float vara,float varb,float varc,float ergreteil,float unterwurz);

void main ()
{
  float quadratische;
        int auswahl;
  printf("Bitte treffen sie ihre Auswahl: \n\n");
  printf("1) Quadratische Gleichung loesen\n");
  printf("2) Mittelwert berechnen\n");
  printf("3) Requesion\n");
  printf("Auswahl: ");
  scanf("%d",&auswahl);
  /*void clrscr(void);*/
  switch(auswahl)
    {
      case 1:
        {
          void quadratische();
          break;
            }
      case 2:
        {
                    printf("\nMittelwertberechnung: ");
            }
      case 3:
        {
                    printf("\nRegession: ");
                    break;
        }
    default:
            {
              printf("Falsche Auswahl!!");
              break;
      }
    }
  getch();

}
void quadratische()
{
  float vara,varb,varc,erg1,erg2,unterwurz,ergreteil;
  do
  {
    printf("a: ");
    scanf("%f",&vara);
    if (vara==0)
    {
              printf("  a darf nicht 0 sein! Da es sonst keine Quadratische Gleichung ist\n");
    }
  }
  while (vara==0);
  printf("b: ");
  scanf("%f",&varb);
  printf("c: ");
  scanf("%f",&varc);
  erg1=((-varb)/(2*vara));
  unterwurz=unterwurzfkt(vara,varb,varc,unterwurz);
  if (unterwurz<0)
  {
      erg2=komplexeloesungen(vara,varb,varc,erg2);
      printf("\nErgebnis 1: %5.3f",erg1);
      printf(" +");
      printf("%5.3fj",erg2);
      printf("\nErgebnis 2: %5.3f",erg1);
      printf(" -");
      printf("%5.3fj",erg2);
      printf("\nDiese Gleichung hat 2 komplexe Loesungen!!");
  }
  else
  {
      if (unterwurz==0)
      {
              printf("\nErgebnis: %5.3f",erg1);
        printf("\nDiese Gleichung hat nur 1 reelle Loesung!!");
      }
      else
      {
              ergreteil=reelleloesungen(vara,varb,varc,ergreteil,unterwurz);
              erg1=(-varb/2*vara)+ergreteil;
              erg2=(-varb/2*vara)-ergreteil;
              printf("\nErgebnis 1: %5.3f",erg1);
              printf("\nErgebnis 2: %5.3f",erg2);
      }
  }


 }
float unterwurzfkt(float vara,float varb,float varc,float unterwurz)
{
  unterwurz=((varb*varb)-(4*vara*varc));
  return(unterwurz);
}
float komplexeloesungen(float vara,float varb,float varc,float erg2)
{
        erg2=sqrt((-1)*((varb*varb)-(4*vara*varc)));
  return(erg2);
}
float reelleloesungen(float vara,float varb,float varc,float ergreteil,float unterwurz)
{
        ergreteil=sqrt(unterwurz)/(2*vara);
  return(ergreteil);
}


kikakater 27.11.2003 23:26

Code:

#include <stdio.h>
#include <conio.h>
#include <math.h>
float unterwurzfkt(float vara,float varb,float varc,float unterwurz);
float komplexeloesungen(float vara,float varb,float varc,float erg2);
float reelleloesungen(float vara,float varb,float varc,float ergreteil,float unterwurz);

void quadratische1 ( void );

int main ()
{
  float quadratische;
        int auswahl;
  printf("Bitte treffen sie ihre Auswahl: \n\n");
  printf("1) Quadratische Gleichung loesen\n");
  printf("2) Mittelwert berechnen\n");
  printf("3) Requesion\n");
  printf("Auswahl: ");
  scanf("%d",&auswahl);
  /*void clrscr(void);*/
  switch(auswahl)
    {
      case 1:
          quadratische1();
          break;
      case 2:
                    printf("\nMittelwertberechnung: ");
        break;
      case 3:
                    printf("\nRegession: ");
                    break;
    default:
            {
              printf("Falsche Auswahl!!");
              break;
      }
    }
  getch();

 return 0;
}

void quadratische1 ( void )
{
  float vara,varb,varc,erg1,erg2,unterwurz,ergreteil;
  do
  {
    printf("a: ");
    scanf("%f",&vara);
    if (vara==0)
    {
              printf("  a darf nicht 0 sein! Da es sonst keine Quadratische Gleichung ist\n");
    }
  }
  while (vara==0);
  printf("b: ");
  scanf("%f",&varb);
  printf("c: ");
  scanf("%f",&varc);
  erg1=((-varb)/(2*vara));
  unterwurz=unterwurzfkt(vara,varb,varc,unterwurz);
  if (unterwurz<0)
  {
      erg2=komplexeloesungen(vara,varb,varc,erg2);
      printf("\nErgebnis 1: %5.3f",erg1);
      printf(" +");
      printf("%5.3fj",erg2);
      printf("\nErgebnis 2: %5.3f",erg1);
      printf(" -");
      printf("%5.3fj",erg2);
      printf("\nDiese Gleichung hat 2 komplexe Loesungen!!");
  }
  else
  {
      if (unterwurz==0)
      {
              printf("\nErgebnis: %5.3f",erg1);
        printf("\nDiese Gleichung hat nur 1 reelle Loesung!!");
      }
      else
      {
              ergreteil=reelleloesungen(vara,varb,varc,ergreteil,unterwurz);
              erg1=(-varb/2*vara)+ergreteil;
              erg2=(-varb/2*vara)-ergreteil;
              printf("\nErgebnis 1: %5.3f",erg1);
              printf("\nErgebnis 2: %5.3f",erg2);
      }
  }


 }

float unterwurzfkt(float vara,float varb,float varc,float unterwurz)
{
  unterwurz=((varb*varb)-(4*vara*varc));
  return(unterwurz);
}
float komplexeloesungen(float vara,float varb,float varc,float erg2)
{
        erg2=sqrt((-1)*((varb*varb)-(4*vara*varc)));
  return(erg2);
}
float reelleloesungen(float vara,float varb,float varc,float ergreteil,float unterwurz)
{
        ergreteil=sqrt(unterwurz)/(2*vara);
  return(ergreteil);
}

Entferne die geschweiften Klammern in den case Blöcken der switch Anweisung und füge am Ende ein break; ein, falls dieser Befehl nicht vorhanden ist.

Taufe die Funktion bzw. Prozedur quadratische um, in Dev-C++ schreibt er raus, daß quadratische keine Funktion ist, mit dem Name quadratische1 gelingt die Kompilierung des obigen Programmcodes.

mfg Kikakater

Flink 27.11.2003 23:38

Zitat:

Original geschrieben von kikakater
Code:

    default:
            {
              printf("Falsche Auswahl!!");
              break;
      }

Entferne die geschweiften Klammern in den case Blöcken der switch Anweisung und füge am Ende ein break; ein, falls dieser Befehl nicht vorhanden ist.
im Default-Block aber auch!
Code:

    default:
              printf("Falsche Auswahl!!");
              break;


porli 03.12.2003 22:49

neues programm neue frage:
 
also:
Code:

#include <conio.h>
#include <stdio.h>
#include <math.h>
void main()
{
 float C,R,d,t,Uin,U;
 int  tau1,tau,i,x;
 printf("Berechnet Kondensatorladung:\n\n");
 printf("Geben Sie bitte C ein: ");
 scanf ("%f",&C);
 printf("\nGeben Sie bitte R ein: ");
 scanf ("%f",&R);
 printf("\nGeben Sie bitte Uin ein: ");
 scanf ("%f",&Uin);
 do
 {
  printf("\nWieviele Messwerte wollen Sie pro Tau haben:  ");
  scanf ("%d",&tau);
 }
 while (tau>5||tau<1);

 x=0;
 do
  {
  x++;
  tau1=R*C;
  t=x/(tau1);
  U=Uin*(1-exp(-t));
/*  U=1000;*/
  printf("\nU ist=%f",U);
  }
 while (x!=tau);
 printf("\nAufwiedersehen\n");

 getche();
}

und zwar hab ich das problem das imma 0 rauskommt! egal was ich eingeb! also es dürfte sich um einen Rechenfehler handeln! ich komm aba leider nicht drauf!

hab ma dacht es is vielleicht zu klein für die werte und habs bevor ichs ausgeben hab auch schon mit 100000 multipliziert........hat nix gholfen!?!

wie mach ich daS?

Flink 03.12.2003 23:24

Code:

tau1=R*C;
Das ergibt wenig Sinn, wenn
Code:

int tau1; float R, C;
definiert ist.
Auch tau1 benötigt den Datentyp float.

porli 04.12.2003 19:45

danke stimmt! war a umbesserungsfehla den ich nimma endeckt hab!
danke


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag