Hallo zusammen!
Um mich endlich mal mit C++ zu beschäftigen habe ich damit angefangen einige Algorithmen die wir auf der Uni in java geschrieben haben in C++ zu schreiben...
Da ich mich nicht wirklich gut mit Zeigern auskenne und mich gerade erst angefangen habe damit zu beschäfftigen haben wir hier schon das erste Problem!
Hier erstmal der Code
So das ist ein Simpler Algorithmus der Sucht den Index des Größten Elements und tauscht das Element mit dem letzten. Die länge des Arrays verrringert sich dann immer weiter.
Problem:
Array vor sort:
5 4 2 4 2 7 3 1 33 22 11
Nach sort:
5 4 2 4 2 7 3 1 -858993460 11 22
Diese große Negative Zahl kann doch nur bedeuten das da was mit den Adressen schiefgelaufen ist
wenn jemand weiß wo das Problem ist wäre super. Ich tippe auf ein Pointer Problem nur wo das ist...?
Danke für die Hilfe
Matthias
Um mich endlich mal mit C++ zu beschäftigen habe ich damit angefangen einige Algorithmen die wir auf der Uni in java geschrieben haben in C++ zu schreiben...
Da ich mich nicht wirklich gut mit Zeigern auskenne und mich gerade erst angefangen habe damit zu beschäfftigen haben wir hier schon das erste Problem!
Hier erstmal der Code

Code:
//CMaximumSort.hpp
#ifndef CMAXIMUMSORT_HPP
#define CMAXIMUMSORT_HPP
class CMaximumSort
{
public:
CMaximumSort();
char test();
//Sort (Maximum_sort)
void sort( int* arr, int n );
private:
//returns maximum index
int search_max_index( int* arr, int n );
};
#endif CMAXIMUMSORT_HPP
Code:
//MaximumSort.cpp
#include "CMaximumSort.hpp"
CMaximumSort::CMaximumSort()
{
}//end of Constructor
//n=Array length
int CMaximumSort::search_max_index( int* arr, int n )
{
int max_index = 0;
int i = 0;
while( i < n )
{
if( arr[i] > arr[max_index] )
max_index = i;
i++;
}
return max_index;
} // end of max search
//n=Array length
void CMaximumSort::sort( int* arr, int n )
{
//Temp int for swap Operation
int tmp = 0;
//maximum index
int i = 0;
while( n > i )
{
i = search_max_index( arr, n );
tmp = arr[i];
arr[i] = arr[n];
arr[n] = tmp;
n--;
}
} // end of sort
Code:
//Main
#include <iostream>
#include "CMaximumsort.hpp"
using namespace std;
int main()
{
int arr[] = {5, 4, 2, 4, 2, 7, 3, 1, 33, 22, 11};
//Pointer
int *zarr = arr;
//output
for( int i=0; i<11; i++ )
{
cout << arr[i] << " ";
}
cout << endl;
//Sort
CMaximumSort* CMaxSort = NULL;
CMaxSort = new CMaximumSort();
CMaxSort->sort( arr, 11 );
//output after Sort
for( int i=0; i<11; i++ )
{
cout << arr[i] << " ";
}
//delete
CMaxSort = NULL;
zarr = NULL;
delete CMaxSort;
delete zarr;
}
So das ist ein Simpler Algorithmus der Sucht den Index des Größten Elements und tauscht das Element mit dem letzten. Die länge des Arrays verrringert sich dann immer weiter.
Problem:
Array vor sort:
5 4 2 4 2 7 3 1 33 22 11
Nach sort:
5 4 2 4 2 7 3 1 -858993460 11 22
Diese große Negative Zahl kann doch nur bedeuten das da was mit den Adressen schiefgelaufen ist

Danke für die Hilfe
Matthias
Zuletzt bearbeitet: