Einsendeaufgabe

B

Bruno Rosenau

Hallo alle zusammen, bin neu hier und habe ein Problem (was sonst).
Ich habe eine Einsendeaufgabe von SGD (C/C++ in Windows) mit der ich
einfach nicht klar komme.
Es sollen die fehlenden Zeilen eingetragen werden, die ich hier mit
xxxxxx gekennzeichnet habe eingetragen werden.
Es ist zwar lang, aber vielleicht blickt das ja einer.
Zum Programm gehört noch eine Headerdatei mit der Variable (char
*meldung[]) in der die Strings zum sortieren sind.
Für jede Hilfe wäre ich echt dankbar.

/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* E3_5 Sortieren mit Bubblesort. Programm zur Einsendeaufgabe 3 CWI5
*/
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<time.h>
#include"c:\cwi\_lbx\e3_5.h"


#define ZEICHEN
//#define BIL clrscr()
/*@@@@@@@@@@@@@@@@@@@@@@@@@ Deklarationen
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

xxxxxx /* char Zeiger auf Zeiger auf Text */

/*@@@@@@@@@@@@@@@@@@@ Funktionsprototypen
@@@@@@@@@@@@@@@@@@@@@@@*/
void bubble_sort(char *zeiger[], long anzahl, int(*vergl)(char *a,
char *b));
void array_ausgabe(char **zz_zeiger,long anzahl);
void tausch_zeiger(char *zeiger[],int x, int y);
void tausch_zeichen(char *zeiger[],int x, int y);
int kleiner(char *a, char *b);

/*@@@@@@@@@@@@@@@@@@@@@* Hauptfunktion
@@@@@@@@@@@@@@@@@@@@@@@*/
void main(void)
{
size_t stueck;
clock_t old_time, new_time, time_dif;

stueck = sizeof(meldung)/sizeof(char *); /* F"ngt bei null an
*/

puts("@@* Demonstration von Bubbelsort mit Zeigern auf Funktionen
@@*");
//BIL;

xxxxxx /* char Zeiger auf
Arrayanfang */

puts("@@@ Ausgabe der unsortierten Strings @@@");

array_ausgabe(zz_text,stueck);
getch();
puts("@@@ Sortierung durch lexikographischen Stringvergleich @@@");

old_time = clock();
bubble_sort(meldung,stueck,kleiner); /* Sortierung */
new_time = clock();

zz_text = meldung; /* char Zeiger auf Arrayanfang
*/
array_ausgabe(zz_text,stueck);

time_dif = new_time - old_time ;
printf("Die Sortierung hat %ld clocktic gedauert!",
time_dif );
getch();
}
/*@@@@@@@@@@@@@@@@@@@@@ Sortierfunktion
@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Aufgabe der Funktion:
*/
/* Sortiert ein Array von Zeigern auf Zeichenketten
*/
/* Dadurch wird die Sortierung schneller ,weil nur noch Zeiger
*/
/* getauscht werden und die Daten im Array stehen bleiben!
*/
/*
*/
/* Rueckgabewert: void
*/
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
void bubble_sort(char *zeiger[],long anzahl, int (*vergl)(char *a,
char *b))
{
int durchgang; /* Zaehlt die Durchgaenge
*/
int position; /* Merkt sich d. Pos.im Array
*/
int vergleichswert; /* Enthaelt Ergebnis des Vergleichs zweier
Werte*/

for( durchgang = 1; durchgang < anzahl; durchgang++)
{
for( position = 0; position < (anzahl - durchgang); position++)
{
vergleichswert = (*vergl)( zeiger[position],
zeiger[position+1]);
if(vergleichswert)
{
#ifdef ZEICHENz

xxxxxx
#else

xxxxxx
#endif
}
} /* Position
*/
} /* Durchgang
*/
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Aufgabe der Funktion: Soll die 'Zeiger auf das Array' tauschen
*/
/* Dazu muss es einen Zeiger in einer temporaeren Variablen zwischen-
*/
/* speichern
*/
/*
*/
/* Rueckgabewert: void
*/
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

void tausch_zeiger(char *array[], int x, int y) /* Vertausche Pointer
*/
{
char *temp;

xxxxxx
array[x] = array[y];

xxxxxx
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Aufgabe der Funktion: Soll die Strings auf die die Zeiger zeigen
*/
/* tauschen. Dazu muss es einen kompletten String in einem temporaeren
*/
/* String zwischenspeichern
*/
/*
*/
/* Rueckgabewert: void
*/
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

void tausch_zeichen(char *array[], int x, int y) /* Vertausche Strings
*/
{ /* zeichenweise durch
*/
char temp[300]; /* umkopieren.
*/

xxxxxx
strcpy(array[x], array[y]);

xxxxxx
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Aufgabe der Funktion: Gibt das Array zeilenweise aus.
*/
/* Besonderheit : Es wird ein Zeiger auf ein Zeigerarray verwendet
*/
/*
*/
/* Rueckgabewert: keiner
*/
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
void array_ausgabe(char **zz_zeiger,long anzahl)
{
int index;
for( index = 0; index < anzahl ; index++, zz_zeiger++)
{
printf("%2d : %s \n",index,*zz_zeiger);
}
printf("\n");
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Funktion "Vergleichen", hier: Ist Wert a kleiner als Wert b?
*/
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

int kleiner(char *a, char *b)
{
int rueck = 0;
for ( ; *a == *b && *a != 0; a++, b++);

xxxxxx
rueck = 1;
return(rueck);
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
 
P

pete

Bruno said:
#include<conio.h>
#include"c:\cwi\_lbx\e3_5.h"

If you can post a version of your code,
that doesn't use features from those two non standard headers,
then the problems with your code would be on topic.

If you post to a German (?) language newsgroup,
they'll probably make the same recomendation.
 
N

Nils Petter Vaskinn

On Tue, 17 Feb 2004 07:57:51 -0800, Bruno Rosenau wrote:

[problem in german]

Bitte de.comp.lang.c benützen fur deutsche fragen.

Was that correct german anyone?
 
M

Michael

Hi Nils,

not to bad ;-),
just the vowel-mutations are wrong
it is f"ur instead of fur and benutzen.
It sounds better if you move the verb to the
end. Anyway, ... better than my knowledge of
your mothertongue (Dutch?)
 
P

Peter Pichler

pete said:
If you can post a version of your code,
that doesn't use features from those two non standard headers,
then the problems with your code would be on topic.

Not to mention that the latter will probably *not* include the file
that the OP intended :)
 
N

Nils Petter Vaskinn

Anyway, ... better than my knowledge of
your mothertongue (Dutch?)

Norwegian. We all learn english in cumpulsory school, and in the voluntary
three years following (if you take "general studies" as a preparation for
higher education) you have to have an additional language. I chose german
instead of french but I've forgotten a lot since then.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,962
Messages
2,570,134
Members
46,692
Latest member
JenniferTi

Latest Threads

Top