![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 17.06.2010
Сообщений: 3
|
![]()
Дан многострочный текст (char text[20][81]). Раздвиньте текст, вставив перед каждым вхождением заданного символа указанную последовательность символов. Если длины строки не хватает, то последовательность не вставлять.
Реализовать и использовать функцию, которая вставляет одну строку в другую: int insertString (char destinString[81], const char sourceString[81], int Index); Входные данные: destinString – строка, в которую вставляется другая строка sourceString – вставляемая строка Index – индекс символа, начиная с которого вставляется строка Выходные данные: destinString – строка после вставки в нее другой строки возвращаемое значение - признак успешной вставки строки: 0 – не успешно, 1 — успешно Реализовать и использовать функцию поиска вхождения символа в текст: int findCharInText (const char text[20][81], char character, int * line, int * column); Входные данные: text – текст, в котором ищется символ character – символ, который необходимо найти line – строка, с которой необходимо начать поиск column — столбец, с которого необходимо начать поиск Выходные данные: line – строка найденного символа column — столбец найденного символа возвращаемое значение - признак успешности поиска: 0 – не успешно, 1 - успешно. ВОТ ЧТО Я СДЕЛАЛ: #include "stdafx.h" #include <stdio.h> #include <string.h> #include "testing.h" #include <tchar.h> #include <ctype.h> #include <conio.h> int insertString (char destinString[81], const char sourceString[81], int Index) //функция, которая вставляет одну строку в другую { int length;//Переменная, хранящая количество элементов в строке int all_len;//Переменная определяющая сумму вставляемых символов и символов находящихся в строке int insert_test=0; int z,k=0;//Переменные циклов char temp [81]; all_len=strlen(destinString)+strlen (sourceString);//Определение суммы вставляемых символов и символов в строке if(all_len<=81)//Сравнение суммы символов с размером строки { insert_test=1; length=strlen(destinString);//находим количество символов в строке for(z=Index;z<length;z++)//копирование символов идущих после заданного { temp[k]=destinString[z]; k++; } temp[k]='\0';//ограничение строки k=0; for (z=Index;z<all_len;z++) { destinString[z]=sourceString[k]; k++; } strcat(destinString,temp); } return (insert_test); } int findCharInText (const char text[20][81], char character, int * line, int *column) { int symbol_test=0; if (text[*line][*column]==character)//Сравнение i-го символа с символом перед которым будет вставляться последовательность { symbol_test=1; } return (symbol_test); } int _tmain(int argc, _TCHAR* argv[]) { char sourceString [81];//Массив из вставляемых символов char character;//Удаляемый символ char text [20][81]; int M;//Количество строк char b[100];//Массив забирающий "ненужные" символы int flag, flag2, chek_string=0; //Ввод вставляемых символов input_printf("Enter insert text:"); gets(sourceString); //Ввод символа перед которым будет вставляться последовательность input_printf("Enter a symbol:"); scanf("%c",&character); input_printf("Print M:");//Ввод количества строк текстового массива scanf("%d",&M); if (M<1 || M>20)//Проверка вхождения в диапазон переменной М error_printf("invalid input data"); else { input_printf("Starting text:\n"); gets(b); for (int i=0; i<M; i++)//Ввод текстового массива { gets(text[i]); } for(int i=0;i<M;i++) { for(int j=0;j<81; j++) { flag=findCharInText(text, character, &i, &j); if(flag) { flag2=insertString(text[i], sourceString, j); if (flag2) { j=j+strlen(sourceString)+1; } } } } input_printf("Edited text:\n"); for (int i=0; i<M; i++)//Выводим изменённый текстовый массив { if (strlen(text[i])==0)//Если количество символов в строке текстового массиве равно 0 chek_string++;//То увеличиваем значение переменной chek_string else printf("%s\n",text[i]);//Иначе выводим изменённую строку } if (chek_string==M)//Если количество пустых строк совпадает с количеством строк в текстовом массиве puts("no solution");//Выводим сообщение } WAIT_ANY_KEY return 0; } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Операции над файлами СИ | Stases | Помощь студентам | 2 | 27.12.2009 18:10 |
Операции над строками | Маринка777 | Общие вопросы .NET | 3 | 29.11.2009 22:28 |
Операции над множествами | britva666 | Помощь студентам | 2 | 23.06.2009 20:33 |
Операции над данными | yulia | БД в Delphi | 24 | 21.05.2007 01:18 |
операции над полями и строками | zetrix | Microsoft Office Excel | 0 | 31.10.2006 08:08 |