vektor sortieren

robby

Grünschnabel
hallo leute

hab ne aufgabe bekommen ein programm zu schreiben:
Schreiben Sie folgendes C-Programm mit Schleifenkonstruktionen:
- Der Benutzer ist nach 12 Ganzzahlen zu fragen, die in einen int-Vektor geschrieben werden.
- Der Vektorinhalt ist der Größe nach (klein nach groß) zu sortieren.
- Danach ist die Summe aller geraden Zahlen zu ermitteln.
- Der sortierte Vektorinhalt ist in einer Zeile auszugeben.
- Die Summe der geraden Zahlen ist auszugeben

so mein problem ist jetzt den vektor zu sortieren will das mit der void funktion machen ganzzahlen einlesen und summe aller geraden zahlen ausgeben ist kein problem aber der rest
könnt ihr mir bitte bitte helfen wäre echt sehr dankbar über eine antwort

gruß
 
Code:
void bubble(int *array, int len)
{
	int temp;

	while(len--)
	{
		 for(int i = 1; i <= len; i++)
		 {
			 if(array[i-1] > array[i])
			 {
				temp = array[i];
				array[i] = array[i-1];
				array[i-1] = temp;
			 }
		}
	}	
}

versuchs mal mit bubble sort
 
hier mal mein script bis jetzt vielleicht hilft das ein wenig weiter

Code:
#include <stdio.h>
#include <stdlib.h>

char *z="gerade";

void gr(int [ ]);
void aus(int anzahl);
void sort(int sort);

int main()

{
 int vektor[12], i;
 printf("12 ganze Zahlen eingeben!\n");
 for (i=0; i<12; i++)
 {
  printf("Bitte geben Sie die %2dte ganze Zahl ein!  ",i+1);
  if (scanf("%d",&vektor[i])!= 1)
  {
   printf("Falsch!!!\n");
   exit(1);
  }
 }
 gr(vektor);
 return 0;
}

void gr(int vek[ ])
{
 int j, zaehl=0;
 for (j=0; j<12; j++)
 {
  if (vek[j] % 2 == 0)
   zaehl++;
 }
 aus(zaehl);	
}

void aus(int anzahl)
{
 printf("\nEs gibt %d %s Zahlen im Vektor.\n",anzahl,z);
}

void sort(int vek[], int len)
{
	int i;
	while(len--)
	{
		for (i=1; i<=len; i++)
		{
			if(vek[i-1] > vek[])
				i = vek[i]
				vek[i] = vek[i-1];
				vek[i-1] = i;
			 }
		}
	}	
}
 
Zuletzt bearbeitet von einem Moderator:
puh!!!!

ich komme damit nicht klar könnt ihr mir vielleicht helfen!!!

das ist echt ein ******!!!
 
Servus!

Hab zwar schon mind. 3 Jahre kein C mehr angefasst aber versuchs mal so ...

Kleine Anmerkung ... du verwendest den Begriff "Vektor" fälschlicherweise für die Datenstrucktur Array ... ein Vector ist ein dynamischer Objektspeicher und kein statischer wie ein Array ...



Code:
#include <stdio.h>
#include <stdlib.h>

char *z="gerade";

void gr(int []);
void aus(int anzahl);
void sort(int sort);
void arrayAus(int [] );

int main()

{
 int vektor[12];
 int i;
 printf("12 ganze Zahlen eingeben!\n");

 for (i=0; i<12; i++)
 {
  printf("Bitte geben Sie die %2dte ganze Zahl ein!  ",i+1);

  scanf("%d", &vector[i]);  
 }

 gr(vektor);
 sort(vektor);
 return 0;
}

void gr(int vek[ ])
{

 int j = 0;
 summe = 0;

 for (j=0; j<12; j++)
 {
  if (vek[j] % 2 == 0)
   summe = summe + vek[j];
 }
 aus(summe);	
}

void aus(int s)
{
 printf("\nDie Summe der %sn Zahlen des Vektors sind %d.\n",z,s);
}

void arrayAus(int vek[], int len){
	for(int i = 0; i <len; i++){
		printf("%d,",vek[i]);
	}	

}

void sort(int vek[], int len)
{

	int temp = 0;	

	for(int i = 0; i < len - 1; i++){
		for (int j = 0; j < len - i - 1; j++){
			if(vek[j] > vek[j+1])
				temp = vek[j];
                                vek[j] = vek[j+1];
                                vek[j+1] = temp;
				

			 }
	
		}	
	}

    arrayAus(vek);
}

Gruss Tom
 
Code:
#include <stdio.h>
#include <stdlib.h>

char *z="gerade";


void aus(int s);
void gr(int vektor[ ]);
void sort(int vektor[], int len);
void arrayAus(int vektor[], int len);



int main()
{
 int vektor[12], i;
 printf("12 ganze Zahlen eingeben!\n");

 for (i=0; i<12; i++)
 {
  printf("Bitte geben Sie die %2dte ganze Zahl ein!  ",i+1);
  if (scanf("%d",&vektor[i])!= 1)
  {
	printf("Falsch!!!\n");
    exit(1);
  }

 gr(vektor);
 sort(vektor);
 return 0;
}


void gr(int vektor[ ])
{
 int j = 0;
 summe = 0;

 for (j=0; j<12; j++)
 {
  if (vektor[j] % 2 == 0)
   summe = summe + vektor[j];
 }
 aus(summe);	
}


void aus(int s)
{
 printf("\nDie Summe der %sn Zahlen des Vektors sind %d.\n",z,s);
}


void arrayAus(int vektor[], int len)
{
	for(int i = 0; i <len; i++)
	{
		printf("%d,",vektor[i]);
	}	
	arrayAus(vektor);
}


void sort(int vektor[], int len)
{

	int temp = 0 , i, len, j;	

	for(int i = 0; i < len - 1; i++)
	{
		for (int j = 0; j < len - i - 1; j++)
		{
			if(vektor[j] > vektor[j+1])
			{
				temp = vektor[j];
				vektor[j] = vektor[j+1];
                vektor[j+1] = temp;
			}
	
		}	
	}
}

Hab jetzt diesen Code eingegeben bekomme aber leider noch diese Fehlermeldungen was kann das sein?????

C:\Programme\Microsoft Visual Studio\MyProjects\121\12.cpp(29) : error C2660: 'sort' : Funktion akzeptiert keine 1 Parameter
C:\Programme\Microsoft Visual Studio\MyProjects\121\12.cpp(35) : error C2601: 'gr' : Lokale Funktionsdefinitionen sind unzulaessig
C:\Programme\Microsoft Visual Studio\MyProjects\121\12.cpp(49) : error C2601: 'aus' : Lokale Funktionsdefinitionen sind unzulaessig
C:\Programme\Microsoft Visual Studio\MyProjects\121\12.cpp(55) : error C2601: 'arrayAus' : Lokale Funktionsdefinitionen sind unzulaessig
C:\Programme\Microsoft Visual Studio\MyProjects\121\12.cpp(65) : error C2601: 'sort' : Lokale Funktionsdefinitionen sind unzulaessig
C:\Programme\Microsoft Visual Studio\MyProjects\121\12.cpp(86) : fatal error C1004: Unerwartetes Dateiende gefunden
Fehler beim Ausführen von cl.exe.

121.exe - 6 Fehler, 0 Warnung(en)


Danke für die hilfe

wenn das jetzt noch klappt bin ich super zufrieden
 
Servus!

Folgender Code wurde getestet und funktioniert Ordnungsgemäß ...

MFG Tom

Code:
#include <stdio.h>
#include <stdlib.h>

char *z="gerade";

void aus(int s, int z){
 printf("\nDie Summe der %d geraden Zahlen des Vektors sind %d.\n",z,s);
};

void arrayAus(int vek[],int len){
	for(int i = 0; i <len; i++){
		printf("%d,",vek[i]);
	}	

}

void sort(int vek[], int len){

	int temp = 0;	

	for(int i = 0; i < len - 1; i++){
		for (int j = 0; j < len - i - 1; j++){
			if(vek[j] > vek[j+1]){
				temp = vek[j];
                                vek[j] = vek[j+1];
                                vek[j+1] = temp;
				

			 }
	
		}	
	}

    arrayAus(vek,12);
}		


void gr(int vek[]){

 int j = 0;
 int summe = 0;
 int g = 0;

 for (j=0; j<12; j++)
 {
  if (vek[j] % 2 == 0){
  g++;
   summe = summe + vek[j];
   }
 }
 aus(summe,g);	
}


int main()

{
 int vektor[12];
 int i;
 printf("12 ganze Zahlen eingeben!\n");

 for (i=0; i<12; i++)
 {
  printf("Bitte geben Sie die %2dte ganze Zahl ein!  ",i+1);

  scanf("%d", &vektor[i]);  
 }

 gr(vektor);
 sort(vektor,12);
 return 0;
}
 

Anhänge

  • nonme00.zip
    16,7 KB · Aufrufe: 25
Zurück