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. |