Hilfe bei Funktionen

nordpark

Grünschnabel
Hallo,

Ich habe da ein Programm geschrieben das Zapfen rechnet.
Wie ihr sehen könnt multipliziert es, und dann divitiert es.
Nun möchte ich aber gerne, das das Dividieren und das Multiplizieren in einer eigenen Funktion geschieht.
Eigene Funktion für Dividieren, und dann noch eine eigene Funktion fürs Multiplizieren.
Die ergebnis sollen dann mit Hilfe von return ***** zurück gegeben werden.
Bitte helft, es ist wichtig.

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

 int iMinMD;
 int iMaxMD;
 float fStart;
 float fErgebnis;
 float fMulti;
 float fDivi;

void main (void)
{
 printf("Zapfenrechnen\n");
 printf("----------------\n");

//----------------------------------minimaler Multiplikator---------------------

 printf("minimaler Multiplikator(2...8):");
 scanf("%i",& iMinMD);
 for(;iMinMD>8;)
  {
   printf("minimaler Multiplikator(2...8):");
   scanf("%i",& iMinMD);
  }
 for(;iMinMD<2;)
  {
   printf("minimaler Multiplikator(2...8):");
   scanf("%i",& iMinMD);
  }

//------------------------------------------------------------------------------
//----------------------------------maximaler Multiplikator---------------------

 printf("maximaler Multiplikator(%i...9):", iMinMD);
 scanf("%i",& iMaxMD);
 for(;iMaxMD>9;)
  {
   printf("maximaler Multiplikator(%i...9):", iMinMD);
   scanf("%i",& iMaxMD);
  }
 for(;iMaxMD<iMinMD;)
  {
   printf("maximaler Multiplikator(%i...9):", iMinMD);
   scanf("%i",& iMaxMD);
  }

  //------------------------------------------------------------------------------
//----------------------------------Startwert-----------------------------------

 printf("Startwert:");
 scanf("%f",& fStart);

//------------------------------------------------------------------------------

 fMulti = iMinMD;
 fDivi = iMinMD;

 while(fMulti<=iMaxMD)
  {
   fErgebnis = fStart*fMulti;
   printf("\n\t%f \tx %f \t= %f", fStart, fMulti, fErgebnis);
   fMulti++;
   fStart = fErgebnis;
  }

 while(fDivi<=iMaxMD)
  {
   fErgebnis = fStart/fDivi;
   printf("\n\t%f \t/ %f \t= %f", fStart, fDivi, fErgebnis);
   fDivi++;
   fStart = fErgebnis;
  }

 getch ();
}

Danke im Voraus.

mfg tommy
 
moin


Weil du die Frage auch schnell dorthättest fragen können.

Ich habs mal gemacht:
Code:
#include <conio.h>
#include <stdio.h>

 int iMinMD;
 int iMaxMD;
 float fStart;
 float fErgebnis;
 float fMulti;
 float fDivi;

 float Div(float fStart, float fDivi){ return fStart/fDivi;}
 float Mul(float fStart, float fMulti){ return fStart*fMulti;}

void main (void)
{
 printf("Zapfenrechnen\n");
 printf("----------------\n");

//----------------------------------minimaler Multiplikator---------------------

 printf("minimaler Multiplikator(2...8):");
 scanf("%i",& iMinMD);
 for(;iMinMD>8;)
  {
   printf("minimaler Multiplikator(2...8):");
   scanf("%i",& iMinMD);
  }
 for(;iMinMD<2;)
  {
   printf("minimaler Multiplikator(2...8):");
   scanf("%i",& iMinMD);
  }

//------------------------------------------------------------------------------
//----------------------------------maximaler Multiplikator---------------------

 printf("maximaler Multiplikator(%i...9):", iMinMD);
 scanf("%i",& iMaxMD);

 for(;iMaxMD>9;)
  {
   printf("maximaler Multiplikator(%i...9):", iMinMD);
   scanf("%i",& iMaxMD);
  }
 for(;iMaxMD<iMinMD;)
  {
   printf("maximaler Multiplikator(%i...9):", iMinMD);
   scanf("%i",& iMaxMD);
  }

  //------------------------------------------------------------------------------
//----------------------------------Startwert-----------------------------------

 printf("Startwert:");
 scanf("%f",& fStart);

//------------------------------------------------------------------------------

 fMulti = iMinMD;
 fDivi = iMinMD;

 while(fMulti<=iMaxMD)
  {
   fErgebnis = Mul(fStart, fMulti);
   printf("\n\t%f \tx %f \t= %f", fStart, fMulti, fErgebnis);
   fMulti++;
   fStart = fErgebnis;
  }

 while(fDivi<=iMaxMD)
  {
   fErgebnis = Div(fStart, fDivi);
   printf("\n\t%f \t/ %f \t= %f", fStart, fDivi, fErgebnis);
   fDivi++;
   fStart = fErgebnis;
  }

 getch ();
}

Ist wahrscheinlich noch nicht was du willst, aber du hast dich nur so ausgedrückt.


mfg
umbrasaxum
 
Danke ertmal.

Nein, es stimmt nicht ganz.
Wie du siehst möchte ich ja, das die while-schleife in die Funtkion Div eingebaut wird.
Da kommen dann aber mehrer ergebnis raus, wie kann ich die ganzen Ergebnise dann zurück in die main Funktion schickn.
Ich denke mir irgendwie mit Felder, oder Array.

Danke im Voraus.

mfg tommy
 
moin


Aha, sag das doch gleich.

Warum machst du das dann nciht einfach, bzw. versuchst es und postest deinen Versuch hier.


mfg
umbrasaxum
 
Hallo,

Ich meine das in etwa so.

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

 int iMinMD;
 int iMaxMD;
 float fStart;
 float fErgebnis;
 float fMulti;
 float fDivi;

float Dividieren (float fDiv, float fStart, float fMaxMD);
 {
  while(fDivi<=iMaxMD)
  {
   fErgebnis = fStart/fDivi;
   fDivi++;
   return fErgebnis;
   fStart = fErgebnis;
  }
 }


void main (void)
{
 printf("Zapfenrechnen\n");
 printf("----------------\n");

//----------------------------------minimaler Multiplikator---------------------

 printf("minimaler Multiplikator(2...8):");
 scanf("%i",& iMinMD);
 for(;iMinMD>8;)
  {
   printf("minimaler Multiplikator(2...8):");
   scanf("%i",& iMinMD);
  }
 for(;iMinMD<2;)
  {
   printf("minimaler Multiplikator(2...8):");
   scanf("%i",& iMinMD);
  }

//------------------------------------------------------------------------------
//----------------------------------maximaler Multiplikator---------------------

 printf("maximaler Multiplikator(%i...9):", iMinMD);
 scanf("%i",& iMaxMD);
 for(;iMaxMD>9;)
  {
   printf("maximaler Multiplikator(%i...9):", iMinMD);
   scanf("%i",& iMaxMD);
  }
 for(;iMaxMD<iMinMD;)
  {
   printf("maximaler Multiplikator(%i...9):", iMinMD);
   scanf("%i",& iMaxMD);
  }

  //------------------------------------------------------------------------------
//----------------------------------Startwert-----------------------------------

 printf("Startwert:");
 scanf("%f",& fStart);

//------------------------------------------------------------------------------

 fMulti = iMinMD;
 fDivi = iMinMD;

 fErgebnis = Dividieren(fDiv, fStart, fMaxMD);

 for(;fDiv<=fMaxMD;)
  {
   printf("%f", fErgebnis);
  }

 getch ();
}

mfg tommy
 
moin


Ja der Ansatz ist richtig.

Nur das du die Werte nicht über return zurückgeben kannst.
Übergib der Funktion die Startadresse eines Arrays, und dieses Array gibst du am Ende aus.


mfg
umbrasaxum
 
Zurück