matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Schulmathe
  Status Primarstufe
  Status Mathe Klassen 5-7
  Status Mathe Klassen 8-10
  Status Oberstufenmathe
    Status Schul-Analysis
    Status Lin. Algebra/Vektor
    Status Stochastik
    Status Abivorbereitung
  Status Mathe-Wettbewerbe
    Status Bundeswettb. Mathe
    Status Deutsche MO
    Status Internationale MO
    Status MO andere Länder
    Status Känguru
  Status Sonstiges

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenC/C++Funktion schreiben
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
Forum "C/C++" - Funktion schreiben
Funktion schreiben < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Funktion schreiben: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 19:52 Sa 01.12.2012
Autor: Duckx

Aufgabe
Schreiben Sie eine C-Funktion "divide" zur ganzzahligen Division ohne den / Operator zu verwenden. (durch wiederholte Subtraktion)

Ich weiß ungefähr wie sich das realisieren lässt. Allerdings habe ich keine Ahnung wie ich soetwas in C schreiben soll.

int a;
int b;
i=0;
   while a > b
     a=a-b;
     i=i+1
return i;


Ist das so richtig vom groben Aufbau?
Wie schreibt man soetwas nun in C?

        
Bezug
Funktion schreiben: Antwort
Status: (Antwort) fertig Status 
Datum: 20:04 Sa 01.12.2012
Autor: MathePower

Hallo Duckx,

> Schreiben Sie eine C-Funktion "divide" zur ganzzahligen
> Division ohne den / Operator zu verwenden. (durch
> wiederholte Subtraktion)
>  Ich weiß ungefähr wie sich das realisieren lässt.
> Allerdings habe ich keine Ahnung wie ich soetwas in C
> schreiben soll.
>  
> int a;
>  int b;
>  i=0;
>     while a > b

>       a=a-b;
>       i=i+1
>  return i;
>  
>
> Ist das so richtig vom groben Aufbau?


Vom groben Aufbau her ist das richtig.


>  Wie schreibt man soetwas nun in C?


Das kann man z.B. so realisieren:

1:
2: int divide()
3: {
4:   int i=0;
5:      while a > b
6:        a=a-b;
7:        i=i+1
8:   return i;
9: }


Wobei a,b globale Variablen sind.

Sollen der Funktion divide Parameter übergeben werden,
so sieht das etwas anders aus:

1:
2: int divide(int u,int v)
3: {
4:   int a=u;
5:   int b=v;
6:   i=0;
7:      while a > b
8:        a=a-b;
9:        i=i+1
10:   return i;
11: }



Gruss
MathePower

Bezug
                
Bezug
Funktion schreiben: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:13 Sa 01.12.2012
Autor: Duckx

Ok dankeschön :) Ich weiß nicht genau, was hier gefordert ist.
Aber ich soll als nächste Aufgabe die Funktion in ein Programm integrieren, dass 2 Zahlen einliest und dann die ganzzahlige Division berechnet und anschließend das ergebnis ausgibt.
Also denke ich eher die 2. variante?

Bezug
                        
Bezug
Funktion schreiben: Antwort
Status: (Antwort) fertig Status 
Datum: 20:16 Sa 01.12.2012
Autor: MathePower

Hallo Duckx,

> Ok dankeschön :) Ich weiß nicht genau, was hier gefordert
> ist.
>  Aber ich soll als nächste Aufgabe die Funktion in ein
> Programm integrieren, dass 2 Zahlen einliest und dann die
> ganzzahlige Division berechnet und anschließend das
> ergebnis ausgibt.
>  Also denke ich eher die 2. variante?


Ja, das ist dann die 2. Variante.


Gruss
MathePower

Bezug
                                
Bezug
Funktion schreiben: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:40 Sa 01.12.2012
Autor: Duckx

Und wie realisiere ich das ganze nun in einem richtigen programm? wie lasse ich die variable u und v einlesen?

Bezug
                                        
Bezug
Funktion schreiben: Antwort
Status: (Antwort) fertig Status 
Datum: 21:49 Sa 01.12.2012
Autor: Valerie20


> Und wie realisiere ich das ganze nun in einem richtigen
> programm? wie lasse ich die variable u und v einlesen?

Du kannst mit "scanf" die beiden Werte einlesen.


Bezug
                                                
Bezug
Funktion schreiben: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 22:02 Sa 01.12.2012
Autor: Duckx

Ok danke
aber ich weiß nun nicht, wie ich das als Programm ausgeben soll:
ungefähr so?
int divide(int u,int v)
{
  int a=u;
  int b=v;
  i=0;
     while a > b
       a=a-b;
       i=i+1
  return i;
}

int main ()
{
  scanf ("%u%,&i);
  scanf ("%v",&i);
  printf (i);
  return 0;
}

Bezug
                                                        
Bezug
Funktion schreiben: Antwort
Status: (Antwort) fertig Status 
Datum: 22:27 Sa 01.12.2012
Autor: Valerie20


> Ok danke
> aber ich weiß nun nicht, wie ich das als Programm ausgeben
> soll:
>   ungefähr so?
>   int divide(int u,int v)
>   {
>   int a=u;
>   int b=v;
>   i=0;
>   while a > b

>   a=a-b;
>   i=i+1
>   return i;
>   }
>
> int main ()
>  {
>    scanf ("%u%,&i);
>    scanf ("%v",&i);
>    printf (i);
>    return 0;
>  }

Nur mal zum allgemeinen Ablauf:
Du schreibst zuerst eine Funktion. Hier "divide". Um diese Funktion zu benutzen, musst du sie in der Main Funktion aufrufen. Deine Funktion hat zwei input parameter, u und v. Das heißt du musst die Funktion in der main auch mit zwei parametern aufrufen. Diese zwei parameter liest du ein über scanf. Das "int" vor "divide" sagt dir, dass die Funktion einen int Wert zurück liefert.
Was du da mit der scanf Funktion treibst, verstehe ich nicht.
Sieh bitte in deinem Skript nach (oder google's einfach) wie das funktioniert. Z.b hier wird ein für dich interessantes Beispiel erarbeitet:

[]scanf Funktionsweise

Valerie


Bezug
                                                                
Bezug
Funktion schreiben: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 00:44 So 02.12.2012
Autor: Duckx

ok hier ein neuer Versuch:
ich hoffe ich habe es verstanden

#include <stdio.h>

int divide(int u,int v)
{
  int a=u;
  int b=v;
  int i=0;
     while (a >= b){
       a=a-b;
   i=i+1;}
  return i;
}

int main() {
int h;
int u;
int v;
printf("Geben Sie einen Dividenden ein: [mm] \n"); [/mm]
scanf("%d",&u);
printf("Geben Sie einen Divisor ein: [mm] \n"); [/mm]
scanf("%d",&v);
h=divide(u,v);
printf("Der Quotient ist: [mm] %d\n",h); [/mm]
return 0;
}

Dieses Programm habe ich auch ausprobiert und es hat funktioniert. Allerdings weiß ich nicht, ob der Code so einwandfrei ist.

Bezug
                                                                        
Bezug
Funktion schreiben: Antwort
Status: (Antwort) fertig Status 
Datum: 11:58 So 02.12.2012
Autor: Valerie20


Nur am Rande: Die Variablen in der main Funktion müssen nicht den gleichen Namen tragen wie die Variablen, die du bei deiner Funktion deklariert hast. Du könntest die Variablen deiner main Funktion beliebige Namen geben.

Ich würde noch eine Abbruch bedingung mit einbauen, für den Fall dass jemand durch Null teilen würde.

Valerie


Bezug
                                                                                
Bezug
Funktion schreiben: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 12:10 So 02.12.2012
Autor: Duckx

Wie bringe ich das in die divide funktion ein?
wenn ich da ne if funktion einbaue wird es trotzdem nicht ausgegeben weil ich es in der main funktion nicht habe oder?
Kann mir jemand eine Möglichkeit geben?


Bezug
                                                                                        
Bezug
Funktion schreiben: Antwort
Status: (Antwort) fertig Status 
Datum: 12:24 So 02.12.2012
Autor: Valerie20


> Wie bringe ich das in die divide funktion ein?

gar nicht.

> wenn ich da ne if funktion einbaue wird es trotzdem nicht
> ausgegeben weil ich es in der main funktion nicht habe
> oder?

Genau. Es muss also in die Main. Du musst das abfangen, bevor die eingelesenen Variablen in deine Funktion gelangen. Mit einer If else Bedingung kannst du es machen.



Bezug
                                                                                                
Bezug
Funktion schreiben: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 12:27 So 02.12.2012
Autor: Duckx

Ok danke.
Aber in der divide Funktion kann man es garnicht abfangen?
das wäre doch besser falls man öfter was mit der Funktion in einem Programm macht. dann müsste man das nicht immer wieder abfangen sondern hat es kompakt?

Bezug
                                                                                                        
Bezug
Funktion schreiben: Antwort
Status: (Antwort) fertig Status 
Datum: 17:56 So 02.12.2012
Autor: MathePower

Hallo Duckx,

> Ok danke.
>  Aber in der divide Funktion kann man es garnicht
> abfangen?


In der Funktion divide müßte dann der Fall abgefangen werden,
wenn b gleich Null ist. Dann ändert sich die Schleifenbedingung.


>  das wäre doch besser falls man öfter was mit der
> Funktion in einem Programm macht. dann müsste man das
> nicht immer wieder abfangen sondern hat es kompakt?

Gruss
MathePower

Bezug
                                                                                                        
Bezug
Funktion schreiben: Antwort
Status: (Antwort) fertig Status 
Datum: 21:18 So 02.12.2012
Autor: Event_Horizon

Hallo!

Erstmal eine schelmische Frage: Was ist denn, wenn a und/oder  b negativ ist?


Zu dem Problem der Division duch 0:

Im Prinzip ist es korrekt, das in der Funktion divide() selbst zu prüfen, sonst läuft das Dingen ja bis in alle Ewigkeit.
Das Problem ist, was dann? Einfach irgendeine Zahl zurück geben ist nicht gut, denn dann weiß z.B. deine main() nicht, daß da was schief gegangen ist.

Es gibt da einige Lösungsmöglichkeiten für, allerdings würde das hier wohl über das Ziel hinaus schießen.

Bezug
                                                                                                        
Bezug
Funktion schreiben: Antwort
Status: (Antwort) fertig Status 
Datum: 21:19 So 02.12.2012
Autor: Valerie20

Hi!
> Ok danke.
>  Aber in der divide Funktion kann man es garnicht
> abfangen?
>  das wäre doch besser falls man öfter was mit der
> Funktion in einem Programm macht. dann müsste man das
> nicht immer wieder abfangen sondern hat es kompakt?

Doch, natürlich geht das auch.



Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.schulmatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]