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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2010, 18:41   #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 - успешно.

ВОТ ЧТО Я СДЕЛАЛ:
надо переделать так чтобы весь поиск вхождения символа был в самой функции findCharInText , а не тупо сравнение как у меня в функции...
переделать не получается, может кто чем поможет?


Код:
#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; 17.06.2010 в 19:00.
childofthesun вне форума Ответить с цитированием
Старый 17.06.2010, 23:08   #2
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

Не совсем понятно, что тебе надо. Вариант есть такой:функция поиска пробегает по тексту, при нахождении символа, перед которым надо вставить заданную последовательность, вызывает функцию вставки. Но ты вроде всё это в main запихнул.
Farrel вне форума Ответить с цитированием
Старый 18.06.2010, 09:00   #3
childofthesun
Новичок
Джуниор
 
Регистрация: 17.06.2010
Сообщений: 3
По умолчанию

ну да мне надо чтобы функция поиска пробегала весь текст,
но просто я не очень хорошо разбираю с указателями и сам не могу это сделать...
а так по заданию надо чтобы обе через мэйн вызывались
childofthesun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операции над строками + функции childofthesun Общие вопросы C/C++ 0 17.06.2010 18:38
Операции над файлами СИ Stases Помощь студентам 2 27.12.2009 18:10
Операции над строками Маринка777 Общие вопросы .NET 3 29.11.2009 22:28
Операции над данными yulia БД в Delphi 24 21.05.2007 01:18
операции над полями и строками zetrix Microsoft Office Excel 0 31.10.2006 08:08