Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define MAX 3
- #define ILE 5
- char **As;
- char **Bs;
- char **T;
- int lengthA;//= strlen(As[0]);
- size_t lenA[ILE];
- int place[ILE];
- int getK(int j){
- int k = 0, i;//, j;
- for(i = 0; i < MAX; i++){
- if((int)As[j][i] > k){
- k = (int)As[j][i];
- }
- }
- return k;
- }
- void CSort(int p){
- int k = 123;
- int C[k];
- int i;
- for(i = 0; i <= k; i++){
- C[i] = 0;
- }
- for(i = 0; i < ILE; i++){
- C[(int)As[i][p]]++;
- }
- for(i = 1; i <= k; i++){
- C[i] = C[i] + C[i - 1];
- }
- for(i = 0; i < ILE; i++){
- Bs[C[(int)As[i][p]] - 1] = As[i];
- C[(int)As[i][p]]--;
- }
- }
- void RSort(int d){
- int i;
- for(i = d; i >= 0; i--){
- CSort(i);
- memcpy(As, Bs, ILE*MAX);
- //memset(Bs, 0, ILE*MAX);
- puts("wykonane!");
- }
- }
- void wczytaj(){
- // FILE *f = fopen("nazwiskaASCII", "r");
- FILE *f = fopen("plik", "r");
- int i;
- char tmp[MAX];
- int len;
- for(i = 0; i < ILE; i++){
- // fscanf(f, "%i", &place[i]);
- fscanf(f, "%s", tmp);
- len = strlen(tmp);
- As[i] = (char*)malloc(sizeof(char)*MAX);
- Bs[i] = (char*)malloc(sizeof(char)*MAX);
- strcpy(As[i], tmp);
- strcpy(Bs[i], tmp);
- lenA[i] = len;
- }
- printf("Wczytano prawidlowo!\n");
- fclose(f);
- }
- void wyswietl(char **a){
- int i;
- for(i = 0; i < ILE; i++){
- //int k = getK(i);
- printf("%i. %s \n",i, a[i]); //, lenA[i], k);
- }
- printf("\n");
- }
- void zapisz(){
- FILE *f = fopen("nazwiskaSORTED", "w");
- int i;
- for(i = 0; i < ILE; i++){
- // fprintf(f, "%i\t%s\n",place[i], As[i]);
- fprintf(f, "%s \n", Bs[i]);
- }
- fclose(f);
- printf("Zapisano pomy��lnie!\n");
- }
- int main(void){
- //system("./slowo");
- int i;
- As = (char**)malloc(ILE*sizeof(char*));
- Bs = (char**)malloc(ILE*sizeof(char*));
- T = (char**)malloc(ILE*sizeof(char*));
- wczytaj();
- //memset(Bs, 0, ILE*10);
- //int k = getK(0);
- lengthA = strlen(As[0]);
- printf("\n");
- wyswietl(As); // shows table AS
- wyswietl(Bs);
- RSort(1);
- wyswietl(As);
- wyswietl(Bs);
- for(i = 0; i < ILE; i++){
- printf("%i ", lenA[i]);
- }
- //zapisz();
- // free(As);
- // free(Bs);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement