www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
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
Forum "C/C++" - Array
Array < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Array: funktion
Status: (Frage) beantwortet Status 
Datum: 13:15 So 16.12.2012
Autor: tiger1

Aufgabe
Hallo ich habe gerade probleme bei einer Aufgabe:

Funktion 1 mittels Iteration:  input(n,a)
Es sollen die Elemente des Arrays von Tastatur eingelesen werden.
Funktion 2 mittels Iteration:  output(n,a)
Es sollen die Elemente des Arrays am Bildschirm formatiert angezeigt werden.
Funktion 3 mittels Iteration:  copy(a, anfang, anzahl, b, ziel)
Universelle Kopierfunktion für Arrays
Es soll ein Abschnitt des Arrays a ( anzahl  Elemente, beginnend mit dem Index anfang) in das
Array b kopiert werden ab  dem Index ziel. Beispiel: a: 1 4 6  8 2 9   b: 1 0 2 3 4 5 6  
                  Ergebnis von copy(a,1,3,b,2)   b:  1 0 4 6 8 5 6
Hinweis: Für den Speicherplatz ist die aufrufende Funktion verantwortlich.
Funktion 4 rekursiv: mischen(m,a,n,b,c)
Es sollen die Elemente zweier  aufsteigend sortierter Arrays a (m Elemente) und b (n Elemente)
zusammengemischt und in einem Array c aufsteigend sortiert gespeichert werden.
Beispiel:   a  1 4 5 6 9     b  2 4 11   Ergebnis in c 1 2 4 4 5 6 9 11.
Dies  soll wie folgt rekursiv programmiert werden.
Falls a keine Elemente enthält: b mittels copy nach c kopieren und man ist fertig.
Falls b keine Elemente enthält: a mittels copy nach c kopieren und man ist fertig.
Ansonsten ist das Maximum aller Elemente von a und b bestimmen .
Dies ist a[m-1] oder b[n-1], da beide Arrays sortiert sind.
Ist das Maximum a[m-1] dann
    Kopiere a[m-1] ans Ende von c und mische die restlichen m-1 Elemente von a und n Elemente von b  
    nach c.  Dies erledigt der (rekursive) Aufruf von mischen(m-1,a,n,b,c)
Ist das Maximum b[n-1] dann analog b[n-1] kopieren etc.
Beispiel für einen Zwischenschritt, wobei bereits die 3 Elemente 6 9 11 nach c kopiert wurden:
a  1 4 5 6 9     b  2 4 11   und aktuell  in c  - - - - - 6 9 11.
Das Maximum der verbliebenen Elemente von a und b  ist a[2]=5. Es wird nach c kopiert
                 a  1 4 5 6 9     b  2 4 11   Ergebnis in c .- - - - 5 6 9 11.
Dann ist nur noch der Rest von a: 1 4 und der Rest von b: 2 4 in die ersten 4 Elemente von c zu
mischen mittels eines rekursiven Aufrufs.

Ich hab mein Programm so stehen:

#include <iostream>
#include <iomanip>
#include "fkt_PROTO.h"

using namespace std;


int main()
{
    char auswahl;
    int anzahl;
    const int index=20;
    double inputRAY[index];

    cout << "Hi was geht [mm] \n" [/mm]
        << "ich steh auf dummy [mm] texte.\n" [/mm]
        << "A. Arraygroesse festlegen(folgt [mm] B).\n" [/mm]
        << "B. Was geht ab Array [mm] eingabe.\n" [/mm]
        << "C. Gib ma was [mm] aus.\n" [/mm]
        << "D. [mm] Kopieren.\n" [/mm]
        << "E. Misch [mm] .\n"; [/mm]
    cin >> auswahl;

    switch (auswahl)
    {
    case 'a':
    case 'A':
        cout << "Wie groß soll dein Array [mm] sein?\n"; [/mm]
        cin >> anzahl;

    case 'B':
    case 'b':
        input(inputRAY,index,anzahl);
        cout << "eingabe [mm] abgeschlossen\n\n"; [/mm]
        cin.get();
        break;

    case 'C':
    case 'c':
        cout << "Dein Array soll ausgegeben werden? [mm] ...\n"; [/mm]
        output(inputRAY, anzahl);
        cout << "Zufrieden [mm] ??\n"; [/mm]

    }

    return (0);
}


#include <iostream>
#include <iomanip>

using namespace std;

int output(double inputRAY[],int anzahl)
{
    for (int zaehler=0; zaehler<anzahl; zaehler++)
    {
    cout << "Was geht ab  an der stelle " << zaehler << endl
         << "im Array befindet sich die " << zaehler+1 << ". nämlich die:" <<endl
         << inputRAY[zaehler];
    }

    return (0);
}

double input(double array[], int, int);
double output(double array[], int);


Aber irgendwie scheint das Programm nicht zu funktionieren.
Ich denke es liegt am outpunkt .

ABer ich komme nicht auf den Fehler .

Bitte um Hilfe.

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
Array: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:22 So 16.12.2012
Autor: link963

Hallo Tiger!

Was genau funktioniert nicht?

Grüße link963

Bezug
        
Bezug
Array: Antwort
Status: (Antwort) fertig Status 
Datum: 18:33 So 16.12.2012
Autor: link963

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

> Ich hab mein Programm so stehen:
>  
> #include <iostream>
>  #include <iomanip>
>  #include "fkt_PROTO.h"
>  
> using namespace std;
>  
>
> int main()
>  {
>      char auswahl;
>      int anzahl;
>      const int index=20;
>      double inputRAY[index];
>  
> cout << "Hi was geht [mm]\n"[/mm]
>          << "ich steh auf dummy [mm]texte.\n"[/mm]
>          << "A. Arraygroesse festlegen(folgt [mm]B).\n"[/mm]
>          << "B. Was geht ab Array [mm]eingabe.\n"[/mm]
>          << "C. Gib ma was [mm]aus.\n"[/mm]
>          << "D. [mm]Kopieren.\n"[/mm]
>          << "E. Misch [mm].\n";[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)


>      cin >> auswahl;

>  
> switch (auswahl)
>      {
>      case 'a':
>      case 'A':
>          cout << "Wie groß soll dein Array [mm]sein?\n";[/mm]
>          cin >> anzahl;

>  
> case 'B':
>      case 'b':
>          input(inputRAY,index,anzahl);

Hier möchtest du eine Funktion ausführen, die du aber nicht geschrieben hast ?

>          cout << "eingabe [mm]abgeschlossen\n\n";[/mm]
>          cin.get();
>          break;
>  
> case 'C':
>      case 'c':
>          cout << "Dein Array soll ausgegeben werden?
> [mm]...\n";[/mm]
>          output(inputRAY, anzahl);
>          cout << "Zufrieden [mm]??\n";[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)


>  
> }
>  
> return (0);
>  }
>  
>
> #include <iostream>
>  #include <iomanip>
>  
> using namespace std;
>  
> int output(double inputRAY[],int anzahl)

Hier hast du int output()...

>  {
>      for (int zaehler=0; zaehler<anzahl; zaehler++)
>      {
>      cout << "Was geht ab  an der stelle " << zaehler <<
> endl
>           << "im Array befindet sich die " << zaehler+1 <<
> ". nämlich die:" <<endl
>           << inputRAY[zaehler];
>      }
>  
> return (0);
>  }
>  
> double input(double array[], int, int);
>  double output(double array[], int);

... und hier hast du double output().

>  
>
> Aber irgendwie scheint das Programm nicht zu
> funktionieren.
>  Ich denke es liegt am outpunkt .
>  
> ABer ich komme nicht auf den Fehler .
>  
> Bitte um Hilfe.
>  Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.

Grüße link963

Bezug
                
Bezug
Array: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 23:07 So 16.12.2012
Autor: tiger1

Mein Programm sieht jetzt so aus:

#include <iostream>
#include <iomanip>


using namespace std;

double input(double array[], int, int);
double output(double array[], int);
int main()
{
    char auswahl;
    int anzahl;
    const int index=20;
    double inputRAY[index];

    cout << "Praktikum 9 was geht [mm] ab\n" [/mm]
        << "ich steh auf dummy [mm] texte.\n" [/mm]
        << "A. Arraygroesse festlegen(folgt [mm] B).\n" [/mm]
        << "B. Was geht ab Array [mm] eingabe.\n" [/mm]
        << "C. Gib ma was [mm] aus.\n" [/mm]
        << "D. Kopier mal [mm] digga.\n" [/mm]
        << "E. Misch mal [mm] digga.\n"; [/mm]
    cin >> auswahl;

    switch (auswahl)
    {
    case 'a':
    case 'A':
        cout << "Wie groß soll dein Array [mm] sein?\n"; [/mm]
        cin >> anzahl;

    case 'B':
    case 'b':
        input(inputRAY,index,anzahl);
        cout << "eingabe [mm] abgeschlossen\n\n"; [/mm]
        cin.get();
        break;

    case 'C':
    case 'c':
        cout << "Dein Array soll ausgegeben werden? [mm] ...\n"; [/mm]
        output(inputRAY, anzahl);
        cout << "Zufrieden [mm] ?\n"; [/mm]

    }
return (0);
}

Die Fehlermeldung , die ich jetzt bekomme sieht so aus:

Die Fehlermeldung sieht so aus:

undefined reference to `input(double*, int, int)'

Weiss du wie ich das korrigieren kann?

Und kannst du mir erklären wie ich den rekursiven Aufgabenteil lösen kann?


Bezug
                        
Bezug
Array: Antwort
Status: (Antwort) fertig Status 
Datum: 07:44 Mo 17.12.2012
Autor: link963

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

> Mein Programm sieht jetzt so aus:
>  
> #include <iostream>
>  #include <iomanip>
>  
>
> using namespace std;
>  
> double input(double array[], int, int);
>  double output(double array[], int);
>  int main()
>  {
>      char auswahl;
>      int anzahl;
>      const int index=20;
>      double inputRAY[index];
>  
> cout << "Praktikum 9 was geht [mm]ab\n"[/mm]
>          << "ich steh auf dummy [mm]texte.\n"[/mm]
>          << "A. Arraygroesse festlegen(folgt [mm]B).\n"[/mm]
>          << "B. Was geht ab Array [mm]eingabe.\n"[/mm]
>          << "C. Gib ma was [mm]aus.\n"[/mm]
>          << "D. Kopier mal [mm]digga.\n"[/mm]
>          << "E. Misch mal [mm]digga.\n";[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)


>      cin >> auswahl;

>  
> switch (auswahl)
>      {
>      case 'a':
>      case 'A':
>          cout << "Wie groß soll dein Array [mm]sein?\n";[/mm]
>          cin >> anzahl;

>  
> case 'B':
>      case 'b':
>          input(inputRAY,index,anzahl);
>          cout << "eingabe [mm]abgeschlossen\n\n";[/mm]
>          cin.get();
>          break;
>  
> case 'C':
>      case 'c':
>          cout << "Dein Array soll ausgegeben werden?
> [mm]...\n";[/mm]
>          output(inputRAY, anzahl);
>          cout << "Zufrieden [mm]?\n";[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)


>  
> }
>  return (0);
>  }
>  
> Die Fehlermeldung , die ich jetzt bekomme sieht so aus:
>  
> Die Fehlermeldung sieht so aus:
>  
> undefined reference to 'input(double*, int, int)'

Das habe ich dir im letzten Beitrag noch geschrieben. Du möchtest eine Funktion ausführen, die du zwar deklariert, aber nicht definiert hast.

>  
> Weiss du wie ich das korrigieren kann?

Definiere sie, also:

double input() { ... } .

>  
> Und kannst du mir erklären wie ich den rekursiven
> Aufgabenteil lösen kann?

Schreibe erstmal deine Funktion für einen Mischvorgang. Also lass das Maximum bestimmen und es nach c kopieren. Dann schreibst du einen Funktionsaufruf auf die Funktion in der Funktion. Nur mit einem neuen Parameter, der abhängig davon ist, wo das Maximum war. Also
mischen(m-1,a,n,b,c); oder
mischen(m,a,n-1,b,c) ; .

>  

Liebe Grüße
link963

Bezug
                                
Bezug
Array: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 01:22 Di 18.12.2012
Autor: tiger1

Kannst du mir einen kleinen tipp geben wie ich das Maximum bestimmen kann?

Bezug
                                        
Bezug
Array: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 23:52 Di 18.12.2012
Autor: tiger1

Mein Programm sieht jetzt so aus :

#include <iostream>
#include <iomanip>


using namespace std;

double output(double array[], int);
int main()
{
    char auswahl;
    int anzahl;
    const int index=20;
    double inputRAY[index];

    cout << " was geht [mm] ab\n" [/mm]
        << "ich steh auf dummy [mm] texte.\n" [/mm]
        << "A. Arraygroesse festlegen(folgt [mm] B).\n" [/mm]
        << "B. Was geht ab Array [mm] eingabe.\n" [/mm]
        << "C. Gib ma was [mm] aus.\n" [/mm]
        << "D. Kopier mal [mm] digga.\n" [/mm]
        << "E. Misch mal [mm] digga.\n"; [/mm]
    cin >> auswahl;

    switch (auswahl)
    {
    case 'a':
    case 'A':
        cout << "Wie groß soll dein Array [mm] sein?\n"; [/mm]
        cin >> anzahl;

    case 'B':
    case 'b':
        input(inputRAY,index,anzahl);
        cout << "eingabe [mm] abgeschlossen\n\n"; [/mm]
        cin.get();
        break;

    case 'C':
    case 'c':
        cout << "Dein Array soll ausgegeben werden? [mm] \n"; [/mm]
        output(inputRAY, anzahl);
        cout << "Zufrieden [mm] ??\n"; [/mm]

    case 'D':
    case 'd':

    using std::end;
    using std::begin;

    std::vector<int> a{1,4,6,8,2,9},
                     b{1,0,2,3,4,5,6};

    //         Anfang      Ende          Wohin
    std::copy( begin(a)+1, begin(a)+3+1, begin(a)+2 ); // Das +1 bei Ende, weil [Anfang,Ende)
    //         Anfang    Ende    Stream-Iterator            // Auf die Standardausgabe, getrennt mit ", "
    std::copy( begin(b), end(b), std::ostream_iterator<int>(std::cout, ", "));


    }

    return (0);
}







double output(double inputRAY[],int anzahl)
{
    for (int zaehler=0; zaehler<anzahl; zaehler++)
    {
    cout << "Was geht ab digga an der stelle " << zaehler << endl
         << "im Array befindet sich die " << zaehler+1 << ". Zahl nämlich die:" <<endl
         << inputRAY[zaehler]<< endl << endl;
    }
    return (0);
}

Ich hoffe das es jemand korrigiert?


Bezug
                                                
Bezug
Array: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 00:20 Fr 21.12.2012
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
                                        
Bezug
Array: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 02:20 Do 20.12.2012
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


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