Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2010, 18:38   #1
childofthesun
Новичок
Джуниор
 
Регистрация: 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;
}
childofthesun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операции над файлами СИ 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