Задание: Разработать функцию, которая выполняет обработку строки: разбивает строку на две части: до первого вхождения заданного символа и после него. При реализации функции запрещается пользоваться функциями библиотек языка Си. Лабораторную организовать в виде элементарного меню: - ввод исходной строки - обработка - вывод исх строки и рез-т. - выход (с запросом подтверждения)
---------------------------- Вот, попытался выполнить это задание. Не работает либо обработка (т.е. разбиение на две части), либо вывод этих двух частей на экран. Посмотрите плиз... вроде сделал всё правильно, но увы и ах =(
| Код | #include<stdio.h> #include<stdlib.h> #include<conio.h>
void InputStr(int *flg1, int *flg2, char str[80]) { clrscr(); printf("Введите строку, которую следует обработать:\n"); gets(str); *flg1=1; *flg2=0; printf("\nСтрока сохранена. Нажмите любую клавишу..."); getch(); }
void WorkStr(int flg1, int *flg2, char str[80], char str_part1[80], char str_part2[80]) { char sym; int sym_index,i; clrscr(); if(flg1==1) { printf("Введите символ: \n>");scanf("%c",&sym); sym_index=-1; for(i=0;i<80;i++) { if(str[i]==sym) { sym_index=i; break; } } if(sym_index!=-1) { for(i=0;i<sym_index;i++) { str_part1=str_part1+str[i]; } for(i=sym_index+1;i<80;i++) { str_part2=str_part2+str[i]; } *flg2=1; // строка обработана printf("Строка обработана!\n"); } else { printf("Символ '%c' в строке не найден!\n",sym); } } else { printf("Строка не введена, обрабатывать нечего!"); } getch(); }
void PrintWork(int flg1, int flg2, char str[80], char str_part1[80], char str_part2[80]) { clrscr(); if (flg1==1) { printf("Исходная строка:\n%s\n",str); } if(flg2==1) { printf("\nРезультат:\n"); printf("Part 1: %s\n",str_part1); printf("Part 2: %s\n",str_part2); } if((flg1!=1)&&(flg2!=1)) { printf("Строка не введена, а значит и не обработана!\n"); } getch(); }
void WorkOff(void) { char ch; clrscr(); printf("Завершить работу программы?\n y - да, любая другая клавиша - нет\n"); ch=getch(); if((ch=='y') || (ch=='Y') || (ch=='н') || (ch=='Н')) exit(1); }
void main(void) { int tt=1, flg1,flg2; char str[80],str_part1[80],str_part2[80]; char ch;
flg1=0; // исх. данные не введены flg2=0; // строка не обработана
while(tt==1) { clrscr(); gotoxy(16,12);printf("1");gotoxy(23,12);printf("Ввод исходной строки"); gotoxy(16,13);printf("2");gotoxy(23,13);printf("Обработка строки"); gotoxy(16,14);printf("3");gotoxy(23,14);printf("Вывод исходной строки и результат"); gotoxy(16,15);printf("4");gotoxy(23,15);printf("Выход"); switch (getch()) { case '1': { InputStr(&flg1,&flg2,str); break; } case '2': { WorkStr(flg1,&flg2,str,str_part1,str_part2); break; } case '3': { PrintWork(flg1,flg2,str,str_part1,str_part2); break; } case '4': { WorkOff(); break; } } }
}
|
|