#include <stdio.h>



int n;

char s[80];

int lim=80;



// Функция вычисляет длину строки s1

len_string(char s1[])

{

int count=0;



while (s1[count]!='\0') ++count;



return(count);

}



// Прорисовка меню

menu_redraw()

{

printf("\n***********************************************************\n"

printf("Главное меню программы:\n"

printf("* 1. Ввод строки\n"

printf("* 2. Вывод строки\n"

printf("* 3. Вывод введенного текста в столбец\n"

printf("* 4. Вывод по словам\n"

printf("* 5. Реверс\n"

printf("* 6. Функции\n"

printf("* 7. О программе\n"

printf("* 8. Перевод символа в ASCII-код\n"

printf("* 9. Перевод ASCII-кода в символ\n"

printf("* q. Выход\n"

printf("*********************************************************\n"



return 0;

}



// Конвертер ASCII-кода в символ

ascii_to_char()

{

int c;



printf("Введите код символа напр (A - 65): "



scanf("%d",&c); // Ввод кода символа



printf("Вы ввели код символа: "



putchar(c); // Вывод символа

putchar('\n'); // Вывод перевода каретки

}



// Конвертер символа в ASCII-код

char_to_ascii()

{

int c;



getchar();

printf("Нажмите символ который вы хотите декодировать: "

c=getchar();

printf("ASCII-код введенного символа: %d\n",c);

}



// О программе

about()

{

printf("\n*********************************************************\n"



printf("* NIX forever !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"



printf("*********************************************************\n"

}



// Функция переворацивает содержимое строки s

reverse()

{

char s2;

int i=0;

int count;



count=len_string(s);

count-=2;





for (i=0;count>=i;count--,i++)

{

s2=s[i];

s[i]=s[count];

s[count]=s2;

}

}



// Функция выводит строку по словам после каждого слова перенос каретки

output_word()

{

int i;



printf("Вывод строки пословам:\n"



for (i=0;i<lim;i++)

{

if (s[i]!=' ' && s[i]!='\n' && s[i]!='\t' && s[i]!='\0') putchar(s[i]);

else putchar('\n');

}

}



// Вывод строки в столбик

output_stolb()

{

int i;



printf("Вывод строки в столбец\n"



for (i=0;i<lim;i++) { putchar(s[i]); putchar('\n'); }

}



// Просто вывод строки

output_str()

{

printf("Вывод строки: %s\n",s);

}



// Функция выхода из программы

quit()

{

printf("Выходим....\n"

exit(0);

}



// Функция чтения строки из stdin (стандартного ввода)

int getstr(char s[])

{

int lim=80;

int c,i;



printf("Введите строку: "



getchar(); // Необходимо чтобы срезать символ перевода строки



i=0;



while(--lim>0 && (c=getchar())!='\n')

{

s[i++]=c;

}



if (c=='\n')

s[i++]=c;



s[i]='\0';



return i;

}



// Функция обработки меню через глобальную переменную "n"

menu()

{



switch(n)

{

case 'q': quit(); break;

case 'Q': quit; break;

case '1': lim=getstr(s); break;

case '2': output_str(); getchar(); break;

case '3': output_stolb(); getchar(); break;

case '4': output_word(); getchar(); break;

case '5': reverse(); getchar(); break;

//case '6': table(); break;

case '7': about(); getchar(); break;

case '8': char_to_ascii(); getchar(); break;

case '9': ascii_to_char(); getchar(); break;

//case 'a': menu_redraw(); getchar(); break;

//case 'A': menu_redraw(); getchar(); break;

default: printf("Error: Некоректный выбор\n" menu_redraw(); break;

}



}



// Главная функция управляет всем ходом выполнения

main()

{

// Прорисовка меню в первый раз при запуске

menu_redraw();



while ((n=getchar())!=0) menu();



return 0;

}