#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define MAX 132
#define ANZAHL 20
void bubleSort(char **str, int strCnt);
char *text[ANZAHL];
char string[MAX];
void main()
{
int i = 0;
// cstenie szlov
while(i<ANZAHL)
{
printf("Bitte geben Sie ein Wort ein>>>\n"); /*Pozhalujsta zadajte slovo*/
fgets(string,MAX,stdin);
text = (char*)malloc(strlen(string)+1);
strcpy(text,string);
i++;
}
//szortirovka
bubleSort(text, ANZAHL);
// Vivod rezulytata
printf("\n");
for(i=0; i<ANZAHL;i++)
{
printf("%s", text);
}
printf("\n\nNazsmite ljubuju klavisu...");
getch();
return;
}
void bubleSort(char **str, int strCnt)
{
bool bSwap = true; // ukazivaet, bila li peresztanovka
while(bSwap)
{
bSwap = false; // peresztanovki poka escse nebilo
for(int i=0;i<strCnt-1;i++)
{
if(strcmp(str,str[i+1])>0)
{
char *buf = str; //ukazately
str = str[i+1];
str[i+1] = buf;
bSwap = true; // bila peresztanovka, znacsit nuzsen escse odin prohod
}
}
}
}
Sortirovka slov ANSI C
Напишите программу, которая считивает 20 строк с клавиатуры и сохраняется в Аrray to Pointer и потом видается обратно в рассортированном виде. Нужно исползоват malloc
Дата:
char *zeilen[20];
Сортиpоват' нужно по системе Бубблесорт, просматриваеш соседние елементи, если последуюший елемент менше предидущего, меняйеш местами (менят местами нужно толко адреса
Задан список L[0] .... L[н-1]
for (i=0; i < n-1; i++ )
{
esli L > L[i+1] pomenjaj mestami L i L[i+1]
}
Vot chto u menya poka poluchilos (pochti chto nichego <_< )
#include <stdio.h>
#include <stdlib.h>
#define MAX 132
#define ANZAHL 20
int swap_strings(char **s1,char **s2);
int StringCompare(char *s1, char *s2);
char *text[ANZAHL];
char string[MAX];
main()
{
char string[MAX];
int i;
while(i<ANZAHL)
{
printf("Bitte geben Sie ein Wort ein>>>\n"); /*Pozhalujsta zadajte slovo*/
fgets(string,MAX,stdin);
text = (char*)malloc(strlen(string)+1);
strcpy(text,string);
i++;
}
StringCompare(text, ANZAHL);
}
int StringCompare(char *s1, char *s2) /* s1 dolzhen pokazivat na string, s2 - na string[i+1], no kak konkretno eto zadat ja ne znaju, potomu chto prodvigajas po arrayu oni ukazivajut vse vremja na raznije stringi(mozhet nuzhno davat im znachenija uzhe vnutri for-schleife), i voobshe v etoj funktsii naverno more oshibok*/
{
int diff;
int i;
int n;
n = strlen(text); /* n - dlina array to pointer*/
for(i=0;i<n-1;i++)
{
diff = strcmp(s1, s2); /*zdes ja pitajus sravnit slova, i zdes navernoe oshibka*/
if(diff>0) /*esli pervoe slovo bolshe vtorogo, to ih nado pomenjat mestami*/
{
swap_strings(&s1,&s2); /*dolzhen obratitsja k swap funktsii*/
}
}
for(i=0; i<strlen(text);i++) /*dolzhen vernut spisok uzhe rassortirovannih slov*/
{
printf("%s", string); /* navernoe oshibka v vidache rezultata, potomu chto nikak ne mogu tolkom razobratsja, kak peredavat rezultati funktsij v "main"*/
}
}
int swap_strings(char **s1,char **s2)
{
char *help;
help = *s1;
*s1 = *s2;
*s2 = help;
return;
}
/*poka chto v programme napisan tolko pervij "progon" t.e do kontsa ona ne rassortiruet, no etim ja zajmus potom*/
Nadejus kto pomozhet.
Spasibo ;)
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
#define NUM_STRINGS 20
#define MAX_STRINGS_SIZE 20
void BubbleSort(char** strings,int count_strings)
{
for(int i=0;i<count_strings;i++) {
for(int i1=0;i1<count_strings-1;i1++) {
if(strcmp(strings,strings[i1+1])>0)
{//swap element
char* tempptr=strings;
strings=strings[i1+1];
strings[i1+1]=tempptr;
}
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char** strings;
string sl;
strings=(char**)malloc(NUM_STRINGS*sizeof(char*));
cout << "Input " << NUM_STRINGS << " strings:" << endl;
for(int i=0;i<NUM_STRINGS;i++) {
if(!(strings=(char*)malloc(MAX_STRINGS_SIZE*sizeof(char*)))) return 0;
getline(cin,sl, '\n');
strcpy(strings,sl.c_str());
}
BubbleSort(strings,NUM_STRINGS);
cout << endl << endl ;
cout << "Result: \n" ;
for(int i=0;i<NUM_STRINGS;i++) {
cout << strings << endl;
}
getline(cin,sl, '\n');
return 0;
}
Spasibo bolshoe. No eto vidimo C++, a poskolku ja zanimajus C vsego 2 mesjatsa, to raznitsi ne znaju, a vot kompiljator znajet:{ i vidaet more oshibok, a chto chto oboznachaet, ja ponjatija ne imeju
топик закрываю.