www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de