⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cw11-10.cpp

📁 This is a part of exercises with book Stephan Prata "School of programing"ex. 11-10
💻 CPP
字号:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define wiersze 10
#define N 81

void wyswietl(char *tab[], int x);
void sortASCI(char *tab[], int x);
void sortLength(char *tab[], int x);
int DlSlowa(char *tab);
void SortSlowo(int dl[], char *tab[], int x);

int main()
{
 char lancuch[wiersze][N], licz = 0,i,*wsklan[wiersze];
 int opcja,dl[wiersze];

 printf("Podaj maksymalnie 10 lancuchow, EOF konczy(ctrl+z -> eneter -> ctrl+z -> enter\n");
 printf("Podaj lancuch - max %d znakow\n",N);
 while ((licz < wiersze) && (fgets(lancuch[licz],N,stdin)))
 {
       fflush(stdin);
       wsklan[licz] = lancuch[licz];
       if (licz+1 < wiersze)
          printf("Podaj lancuch - max %d znakow\n",N);
       licz++;
 }
 do
 {
   for (i=0;i<N-1;i++)
       putchar('*');
   printf("Menu wybierz od 1-5:\n");
   printf("1) wyswietlanie pierwotnej list lancuchow\n2) wyswietlanie lancochow w porzadku ASCI\n");
   printf("3) wyswietlanie lancuchow wedlog dlugosci (rosnaco)\n4) wyswietlanie lancuchow wedlug dlugosci pierwszego slowa\n");
   printf("5) koniec\n");
   for (i=0;i<N-1;i++)
       putchar('*');
   scanf("%d",&opcja);
   putchar('\n');
   switch (opcja)
   {
           case 1: for (i=0;i<licz;i++)
                       fputs(lancuch[i],stdout);
                   break;
           case 2: sortASCI(wsklan, licz);
                   wyswietl(wsklan, licz);
                   break;
           case 3: sortLength(wsklan, licz);
                   wyswietl(wsklan, licz);
                   break;
           case 4: for (i = 0; i < licz; i++)
                       dl[i] = DlSlowa(wsklan[i]);
                   SortSlowo(dl, wsklan, licz);
                   wyswietl(wsklan, licz);
                   break;
           case 5: puts("Koniec - milego dnia");
                   break;
           default: puts("Nie ma takiej opcji, sprubuj jescze raz!");
   }
   putchar('\n');
 }
 while (opcja != 5);

 system("PAUSE");
 return 0;
}

void wyswietl(char *tab[], int x)
{
 int i=0;

 while (i != x)
       fputs(tab[i++],stdout);
}

void sortASCI(char *tab[], int x)
{
int i,j;
char *temp;

for (i = 0; i < x-1; i++)
    for (j = i + 1; j < x ; j++)
        if (strcmp(tab[i],tab[j]) > 0)
        {
           temp = tab[i];
           tab[i] = tab[j];
           tab[j] = temp;
        }
}

void sortLength(char *tab[], int x)
{
int i,j;
char *temp;

for (i = 0; i < x-1; i++)
    for (j = i + 1; j < x ; j++)
        if ( strlen(tab[i]) > strlen(tab[j]))
        {
           temp = tab[i];
           tab[i] = tab[j];
           tab[j] = temp;
        }
}

int DlSlowa(char tab[])
{
 bool w_slowie = 0;
 int i,start,dl;

 i = 0;
 dl = 0;
 while (tab[i] != '\0')
 {
       if (!isspace(tab[i]) && (w_slowie == 0))
       {
          w_slowie = 1;
          dl++;
       }
       else if (!isspace(tab[i]) && w_slowie == 1)
            dl++;
       if (isspace(tab[i]) && (w_slowie == 1))
          break;
       i++;
 }
 return dl;
 }

void SortSlowo(int dl[], char *tab[], int x)
{
int i,j;
char *temp;

for (i = 0; i < x-1; i++)
    for (j = i + 1; j < x ; j++)
        if (dl[i] > dl[j])
        {
           temp = tab[i];
           tab[i] = tab[j];
           tab[j] = temp;
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -