📄 cw11-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 + -