Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Brauche Hilfe bei einem C++ Programm

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]
000
23.11.2003, 20:00 Uhr
~michael
Gast


Ich hätte da ein kleines C++ Problem und würde dringend Hilfe brauchen.
Ich muss nämlich ein C++ Programme ertsellen laut Angabe unten, mit Hilfe von Feldern.
Kann mir irgendjemand sagen wie man das Prorgammiert?
Danke im Voraus

Angabe:

In ein zunächst leeres Feld für zehn integer-Elemente sind beliebig eingegebene Zahlen aufsteigend sortiert einzufügen bzw. zu löschen. Eine bereits im Feld enthaltene Zahl darf kein zweites Mal mehr eingefügt werden. Achten Sie auf entsprechende Fehlermeldungen (z.B. Löschen eines nicht vorhandenen Elementes bzw. aus einem leeren Feld, Einfügen in ein volles Feld). Verwenden Sie die am besten geeignetsten Kontrollstrukturen und achten Sie auf den sinnvollen Einsatz von Funktionen.

So soll es dann arbeiten:
___________________________________________________________

Einfuegen u. Loeschen in einem Feld ganzer Zahlen
<e>infuegen
<l>oeschen
<a>usgabe
<v>erlassen
Ihre Wahl: e

Welche Zahl? 12

Einfuegen u. Loeschen in einem Feld ganzer Zahlen
<e>infuegen
<l>oeschen
<a>usgabe
<v>erlassen
Ihre Wahl: e

Welche Zahl? -12

Einfuegen u. Loeschen in einem Feld ganzer Zahlen
<e>infuegen
<l>oeschen
<a>usgabe
<v>erlassen
Ihre Wahl: e

Welche Zahl? 10

Einfuegen u. Loeschen in einem Feld ganzer Zahlen
<e>infuegen
<l>oeschen
<a>usgabe
<v>erlassen
Ihre Wahl: a

-12 10 12

Einfuegen u. Loeschen in einem Feld ganzer Zahlen
<e>infuegen
<l>oeschen
<a>usgabe
<v>erlassen
Ihre Wahl: l

Welche Zahl? 11
Element gar nicht vorhanden!

Einfuegen u. Loeschen in einem Feld ganzer Zahlen
<e>infuegen
<l>oeschen
<a>usgabe
<v>erlassen
Ihre Wahl: l

Welche Zahl? 10

Einfuegen u. Loeschen in einem Feld ganzer Zahlen
<e>infuegen
<l>oeschen
<a>usgabe
<v>erlassen
Ihre Wahl: a

-12 12

Einfuegen u. Loeschen in einem Feld ganzer Zahlen
<e>infuegen
<l>oeschen
<a>usgabe
<v>erlassen
Ihre Wahl: v
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.11.2003, 20:07 Uhr
0xdeadbeef
Gott
(Operator)


Wonach sieht das hier aus, Diskussionsforum oder Hausaufgabenservice? Zeig deinen Ansatz her und beschreib, wo genau dein Problem liegt, dann helfen wir gerne. Aber die ganze Aufgabe mach ich dir höchstens gegen Bezahlung.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.11.2003, 20:12 Uhr
Pablo
Supertux
(Operator)


@beefy, ich stimme dir zu!

@michael: soll das C, C++, PHP, für Kosole, mit Fenstern, Windows/Linux????? Dein Ansatz? Wenn du nicht mehr beschreibst, was du haben willst bzw. was du versucht hast, dann können wir auch nicht viel helfen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 23.11.2003 um 20:13 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.11.2003, 20:22 Uhr
~michael
Gast


Es ist eine C++ Quellcodedatei zu erstellen.

Diese Funktion ist noch vorgegeben:

C++:
bool bin_search(const int array[], int key, int low, int high, int& position) {

    int middle;

    while (low <= high) {
        middle = (low+high)/2;
        if (key == array[middle]) {
            position = middle;
            return true;
        } else if (key < array[middle])
            high = middle - 1;
        else low = middle + 1;
    }
    position = low;
    return false;
}


--edit: Pablo. [ cpp ] tags gesetzt--

Dieser Post wurde am 23.11.2003 um 20:26 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.11.2003, 20:28 Uhr
Pablo
Supertux
(Operator)


Und was hast du schon vom Programm? Hast du diese Funktion programmiert? Wenn es HA sind, werden wir das nicht lösen, denn die HA muss man selber machen. Was hast du schon versucht? Ohne deinen Ansatz können wir deine Fragen nicht beantworten.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.11.2003, 20:28 Uhr
~michael
Gast


Das Hauptproblem ist das ich aus dieser Aufgaben Stellung keinen Algorithmus erstellen kann. Ich Programmier erst seit 1 Monat mit C++ und in der Fachhochschule wir es einen meiner Meinung nicht gut beigebracht.
Und als Hausaufgabe kann man das nicht betrachten ich hätte es nämlich schon bringen müssen. Ich will halt nur wissen wie das geht!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.11.2003, 20:31 Uhr
0xdeadbeef
Gott
(Operator)


Wenn das ne alte Aufgabe ist, gibts doch bestimmt ne Musterlösung dazu. Beschreib mir, welche Teile davon du nicht verstehst, und ich erklär sie dir.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.11.2003, 20:31 Uhr
Pablo
Supertux
(Operator)


Du hast noch nicht das gesagt: für Kosole, mit Fenstern, Windows/Linux? Soll das Programm nur Text ausgeben oder soll man das in einem Fenster realisieren? (Falls Kosole: benutze std::cin und std::cout)
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 23.11.2003 um 20:31 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.11.2003, 20:36 Uhr
~michael
Gast


ich habe folgendes schon Programmiert gehabt war aber nicht ok.

C++:
#include <iostream.h>
#include <stdlib.h>
#include <limits.h>

int const LEER = 0;        //short int 0


bool validateValue(int value2handle)    // überprüft Benutzereingabe auf Gültigkeit
{
    //[Erlaubte Werte: -32768 bis 32767 ausser 0]
    if((value2handle != LEER) && (value2handle == (int)value2handle) && (value2handle >= SHRT_MIN) && (value2handle <= SHRT_MAX))
        return true;    
        return false;
}


char menu()        
{
    char choice;

    cout << "\n\n\nEinfuegen u. Loeschen in einem Feld ganzer Zahlen\n";
    cout << "Version 1.3 - (c) sev0r 03\n";
    cout << "[Erlaubte Werte: -32768 bis 32767 ausser 0] \n\n";
    cout << "<e>infuegen\n";
    cout << "<l>oeschen\n";
    cout << "<a>usgabe\n";
    cout << "<v>erlassen\n\n\n";
    cout << "Ihre Wahl: ";
    cin >> choice;

    return choice;
}




int readUserInput()        // liest den eingegebenen Wert ein
{
    int value;
    cout << "\nBitte geben Sie einen Wert [Erlaubte Werte: -32768 bis 32767 ausser 0] ein: ";
    cin >> value;
    return value;
}




void sortArray(int arrayToSort[], int array_size)    // sortiert Array aufsteigend
{

    int a=0, i=0, k=0, temp=0;

    for(a=0; a<(array_size-1); a++)
    {
        for(i=0; i<(array_size-1); i++)
        {
            k = i + 1;
            if(arrayToSort[i] > arrayToSort[k])
            {
                temp = arrayToSort[i];
                arrayToSort[i] = arrayToSort[k];
                arrayToSort[k] = temp;
            }
        }
    }
}


int arraySearch(int array[], int key, int array_size)    // return position of found element, or 0 as not found
{
    sortArray(array, array_size);

    int low = 0;
    int high = array_size - 1;
    int middle;

    int position = 0;

    bool found = false;
    
    while(low <= high && found == false)        
    {
        middle = (low + high)/2;

        if(array[middle] == key)    
        {
            position = middle;
            found = true;
        }
        else if(key < array[middle])
        {
            high = middle - 1;
        }
        else
        {
            low = middle + 1;    
        }
    }
    
    return position;
}


void insertIntoArray(int arrayToInsert[], int value, int array_size)        // fügt Wert an der ersten gefundenen "leeren" Stelle ein
{
    int pos = arraySearch(arrayToInsert, LEER, array_size);        // -1 weil 0 wäre NICHT GEFUNDEN - daher wird nicht der Array Index sondern die Postion im Array zurückgegeben
    
    if(pos > 0)
    {
        //Position zum einfügen wurde gefunden
        arrayToInsert[pos] = value;
        cout << "\n Wert wurde erfolgreich eingefuegt!";
    }
    else
        cout << "\n Feld ist bereits vollstaendig gefuellt!";
}


void deleteFromArray(int array[], int position, int array_size)        // fügt Wert an der ersten gefundenen "leeren" Stelle ein
{
    int pos = position;        // -1 weil 0 wäre NICHT GEFUNDEN - daher wird nicht der Array Index sondern die Postion im Array zurückgegeben
    array[pos] = LEER;
    cout << "\n Wert wurde erfolgreich geloescht!";
}


void main()
{
    int const ARRAY_SIZE = 10;
    
    int myArray[ARRAY_SIZE] = {LEER},
        position,
        i;

    int value2handle = 0;

    char choice;
    
    do
    {
        choice = toupper(menu());
        
        switch(choice)
        {
            case 'E':
                value2handle = readUserInput();
                
                if(validateValue(value2handle))
                {
                    position = (short int)arraySearch(myArray, value2handle, ARRAY_SIZE);    

                    if(position > 0)    // Element bereits im Array
                    {
                        cout << "\nFEHLER! Element bereits in Array!\n";
                    }
                    else    // Element noch nicht im Array enthalten
                    {
                        cout << "\nElement kann hinzugefuegt werden!\n";
                        insertIntoArray(myArray, value2handle, ARRAY_SIZE);
                    }
                }
                else
                {
                    cout << "\nUngueltiger Wert! [Erlaubte Werte: -32768 bis 32767 ausser 0]!";    
                }
                break;
            case 'L':
                    value2handle = readUserInput();
                    
                    if(validateValue(value2handle))
                    {
                        position = (short int)arraySearch(myArray, value2handle, ARRAY_SIZE);    

                        if(position > 0)    // Element bereits im Array
                        {
                            deleteFromArray(myArray, position, ARRAY_SIZE);                            
                        }
                        else    // Element noch nicht im Array enthalten
                        {
                            cout << "\nFehler: Element nicht im Array!\n";
                        }
                    }
                break;
            case 'A':
                    sortArray(myArray, ARRAY_SIZE);    
                    cout << "\nArray Inhalt:\n";
                    for(i = 0; i < ARRAY_SIZE; i++)
                        cout << "\n" << myArray[i];
                break;
            case 'S':
                sortArray(myArray, ARRAY_SIZE);
                cout <<    "\nArray sortiert:";

                for(i = 0; i < ARRAY_SIZE; i++)
                    cout << "\n" << myArray[i];
            break;
        }
    
    } while (choice != 'V');
}



--edit: cpp-tags gesetzt. Nächstes mal selbst machen.

Dieser Post wurde am 23.11.2003 um 20:42 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.11.2003, 20:40 Uhr
~michael
Gast


Es soll unter Windows, Microsoft Visual c++ 6.0 laufen und es ist eine einfach Quellcodedatei.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: