Sorteiern in Funktionen

Bismark

Erfahrenes Mitglied
Hallo leute,

Folgendes Problem

Ich habe ein Programm geschrieben, wo man in einer Funktion 10 Namen eingibt, diese namen werden dann dem Funktion <ausgabe> übergeben, wo sie dan auf dem Bildschirm ausgegeben werden, anschließen wird diese Liste dem Funktion <sortieren> übergeben, wo diese Namensliste aufsteigend Sortiert werden soll und der kleinste Listenelement soll auf dem Bildschirm ausgegeben werden, was aber nicht geschieht

Kann Mir irgendjemand helfen.

Quellcode:

Code:
/*
Name: Dogan Alkan
Datum:20.05.2008 
Dateiname: Namensliste
Beschreibung: Durch die Eingabe einiger Namen werden diese wieder Sortiert ausgegeben
*/


#include <conio.h>
#include <iostream>
#include <string>
#include <Windows.h>

using namespace std;


const int maxel = 10;
int wahl;
int eingabe();                                
void ausgabe(string namesliste[maxel]);
string sortierer (string namesliste[maxel]); 

string namesliste[maxel];


int main()            //########## Hauptprogramm ##########
{
	char frage;
			
			eingabe();
			ausgabe(namesliste);
			sortierer(namesliste);
			
			
 		
		cout<<endl<<endl<<endl;
		system ("pause");
		cout<<"Das Programm wird beendet, BITTE WARTEN";
		Sleep (5000);
    return 0;
}                     //########## E N D E Hauptprogramm ##########


int eingabe ()                     //#+#+#+#+#+#+#+#+#+#  Fkt. E I N G A B E  #+#+#+#+#+#+#+#+#+#
{
    int x = 0;
     do
     {

     cout<<"Geben sie ein Namen ein: ";
     cin>>namesliste[x];
     x++;
     }
		 while(x<maxel && namesliste[x-1] != "#");
     
     return x;
}



void ausgabe(string namesliste[maxel])              //#+#+#+#+#+#+#+#+#+#  Fkt. A U S G A B E  #+#+#+#+#+#+#+#+#+#
{
    int x = 0;

cout<<endl<<endl<<"Eingegebene Namen:"<<endl;
    while(namesliste[x]!="#" && x<maxel)
     {
			 cout<<x+1<<". Name:"<< namesliste[x]<<endl;
			 x++;
     }

}

string sortierer(string namesliste[maxel])
{
bool merker;
string tauschen;
do
{
merker = false;
	for (int x = 0; x<maxel-1;x++)
	{
		if (namesliste[x]>namesliste[x+1])
		{
		tauschen = namesliste[x];
		namesliste[x] = namesliste[x+1];
		namesliste[x+1] = tauschen;
		merker = true;
		}
	}
}
while (merker == 1);  

if(namesliste[0] == "#")
{
	cout<<"Es gibt kein kleinstets Listenelent"<<endl<<endl;
}
			 else
				{
					cout<<"Kleinstes Listenelement: "<<namesliste[0];
				}
return namesliste[0];

}
 
C++:
/*
Name: Dogan Alkan
Datum:20.05.2008 
Dateiname: Namensliste
Beschreibung: Durch die Eingabe einiger Namen werden diese wieder Sortiert ausgegeben
*/


#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <iterator>

void read_input(std::vector<std::string>&);
void show_input(std::vector<std::string> const&);

int main()
{
    std::vector<std::string> names;
    read_input(names);
    show_input(names);
    std::sort(names.begin(), names.end());
    show_input(names);

    std::cin.ignore();
} 

void read_input(std::vector<std::string>& data)
{
    std::string input;
    do {
        std::cout << "Geben Sie einen Namen ein ('#end' zum Beenden der Eingabe): ";
        std::getline(std::cin, input);
        data.push_back(input);
    } while (input != "#end");
    
    data.pop_back();
}

void show_input(std::vector<std::string> const& data)
{
    std::cout << "Eingegebene Namen:\n";
    std::copy(data.begin(), data.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
 
Noch eine frage bei diesem Quellcode werden die eingegebenen Zahlen nicht berechnet, ich habe nicht rausgekriegt was falsch ist. (Es kommt keine Felermeldung heraus)

Code:
#include <conio.h>
#include <iostream>
#include <iomanip>

using namespace std;

float berech (float g, float h);

int main()         
{
	float g,h;

	cout<<"Bitte geben Sie die grundseite des Dreiecks an: ";
	cin>>g;
	cout<<"Bitte geben Sie die höhr des Dreiecks an: ";
	cin>>h;
	berech(g,h);
			
	getch();
    return 0;
}     


float berech (float g, float h)                     //#+#+#+#+#+#+#+#+#+#  Fkt. E I N G A B E  #+#+#+#+#+#+#+#+#+#
{ 
    float a=0;

    a=(g*h)/2;

    return a;
}
 
Zuletzt bearbeitet:
Hmm ...
C++:
#include <iostream>

const float area_triangle(const float, const float);

int main()         
{
	std::cout << "Bitte geben Sie die Grundseite des Dreiecks an: ";
	float base(0.0f);
	std::cin >> base;

	std::cout << "Bitte geben Sie die Hoehe des Dreiecks an: ";
	float hight(0.0f);
	std::cin >> hight;

	std::cout << "Flaecheninhalt: " << area_triangle(base, hight) << std::endl;
	std::cin.ignore();			
}     

const float area_triangle(const float base, const float hight)                     
{ return 0.5 * base * hight; }
... kurz & schnell. Multiplikation von Fließkommazahlen (float), ist schneller als Division.
 
Zurück