Lilo Opublikowano 14 Grudnia 2005 Zgłoś Opublikowano 14 Grudnia 2005 (edytowane) Witam! Musze napisać program sortujący tablice zawierającą wyrazy wprowadzane z klawiatury. Chciałem to zrobić na podstawie poniższego programu, ale tutaj są dwie różne tablice o takiej samej zawartości. Jak zrobić, żeby niejako skolonować tablice??? # include <stdio.h># include <conio.h># include <stdlib.h># include <string.h>int porownaj( const void *a, const void *b){return (strcmp((char *)a,(char *)b) );}int main(void) {int i;char tab[7][10] = {"Ala", "Ola", "Mirek", "Szymon", "Darek", "Wacek", "Ela"};char tab_sort[7][10] = {"Ala", "Ola", "Mirek", "Szymon", "Darek", "Wacek", "Ela"};qsort((void *)tab_sort, 7, sizeof(tab[0]), porownaj);for (i=0; i<7; i++)printf("%s\t %s\n", tab[i], tab_sort[i]);getch();return 0;} A oto co napisałem, lecz nie działa # include <stdio.h># include <conio.h># include <stdlib.h># include <string.h>int porownaj( const void *a, const void *b){return (strcmp((char *)a,(char *)b) );}int main(void) {int i,lw;//char *b;char A[7][10];char AB[7][10];clrscr();printf("Podaj liczbe wierszy=");scanf("%d",&lw);fflush(stdin);for(i=1;i<lw+1;i++){printf("\nWpisz tekst %d: ",i);gets(A[i]);}for(i=1;i<lw+1;i++){A[i]=AB[i];}for(i=1;i<lw+1;i++){printf("\nTekst %d: %s",i, A[i]);printf("\nTekst %d: %s",i, AB[i]);}qsort((void *)AB, 7, sizeof(A[1]), porownaj);for (i=1; i<8; i++)printf("%s\t %s\n", A[i], AB[i]);getch();return 0;} Prosze o pomoc. Edytowane 14 Grudnia 2005 przez Lilo Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
lukasrz Opublikowano 14 Grudnia 2005 Zgłoś Opublikowano 14 Grudnia 2005 > Małe wskazówki ;] Przy cytowniu kodu proszę używać tagów bbcode , , i . Bardzo ważne jest także to, abyście podali JĘZYK PROGRAMOWANIA w jakim piszecie. Często jest to dość trudne do odgadnięcia. // ParanoiK Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 14 Grudnia 2005 Zgłoś Opublikowano 14 Grudnia 2005 Fajnie lukasrz, ze mu pomogles. Ogolnie to widze, ze wiesz co robisz. Kolego, mam dla Ciebie dobrego linka: http://www.i-lo.tarnow.pl/edu/inf/alg/algsort/pages/025.php prosze :) ot sortowanie :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
lukasrz Opublikowano 15 Grudnia 2005 Zgłoś Opublikowano 15 Grudnia 2005 Fajnie lukasrz, ze mu pomogles. Ogolnie to widze, ze wiesz co robisz. Kolego, mam dla Ciebie dobrego linka: http://www.i-lo.tarnow.pl/edu/inf/alg/algsort/pages/025.php prosze :) ot sortowanie :) nie wiem jak to jezyk programowania tak wiec sory, przydaloby sie napisac Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Lilo Opublikowano 15 Grudnia 2005 Zgłoś Opublikowano 15 Grudnia 2005 Fajnie, że ktoś stara mi się pomóc, lecz ten link prowadzi do programów napisanych w Pascalu, a ja muszę to napisać w C z poleceniem qsort i to na jutro. Napisałem program na podstawie tego zamieszczonego wyżej, ale trzeba wprowadzać dwa razy te same dane to dwóch różnych tablic. Nie wiem czy rozumiecie na czym polega problem. # include <stdio.h># include <conio.h># include <stdlib.h># include <string.h>int porownaj( const void *a, const void *b){return (strcmp((char *)a,(char *)b) );}int main(void) {int i,lw;//char *c={"cos"};char A[10][10];char B[10][10];clrscr();printf("Podaj liczbe wierszy =");scanf("%d",&lw);fflush(stdin);for(i=1;i<lw+1;i++){printf("\nWpisz tekst %d: ",i);gets(A[i]);}for(i=1;i<lw+1;i++){//c=A[i];//B[i]=c;printf("\nWpisz tekst %d: ",i);gets(B[i]);}qsort((void *)B, 10, sizeof(A[0]), porownaj);for (i=1; i<lw+1; i++)printf("\n%s\t %s\n", A[i], B[i]);getch();return 0;} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 15 Grudnia 2005 Zgłoś Opublikowano 15 Grudnia 2005 Fajnie, że ktoś stara mi się pomóc, lecz ten link prowadzi do programów napisanych w Pascalu, a ja muszę to napisać w C z poleceniem qsort i to na jutro. Napisałem program na podstawie tego zamieszczonego wyżej, ale trzeba wprowadzać dwa razy te same dane to dwóch różnych tablic. Nie wiem czy rozumiecie na czym polega problem. # include <stdio.h># include <conio.h># include <stdlib.h># include <string.h>int porownaj( const void *a, const void *b){return (strcmp((char *)a,(char *)b) );}int main(void) {int i,lw;//char *c={"cos"};char A[10][10];char B[10][10];clrscr();printf("Podaj liczbe wierszy =");scanf("%d",&lw);fflush(stdin);for(i=1;i<lw+1;i++){printf("\nWpisz tekst %d: ",i);gets(A[i]);}for(i=1;i<lw+1;i++){//c=A[i];//B[i]=c;printf("\nWpisz tekst %d: ",i);gets(B[i]);}qsort((void *)B, 10, sizeof(A[0]), porownaj);for (i=1; i<lw+1; i++)printf("\n%s\t %s\n", A[i], B[i]);getch();return 0;} :angry: lol tam masz podane ładnie jak na tacy wszystkie sortowania w róznych językach w tym i c++ a ty mówisz że nie ma... poszukaj bo tam jest wsyskto fantastycznie wyjasnione. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...