Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

рекурсивная функция слияния строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить и вывести на экран в виде таблицы значения функции http://www.cyberforum.ru/cpp-beginners/thread20780.html
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от хнач до хкон с шагом dx с точностью е. Таблицу снабдить заголовком и шапкой. Каждая...
C++ перевод с паскаля на с++ Дана такая задача Необходимо зашифровать текст из 121 буквы, его необходимо записать в квадратную матрицу порядка 11 по стокам, начиная с центра (т. е. с элемента, имеющего индексы 6, 6), а затем по... http://www.cyberforum.ru/cpp-beginners/thread20772.html
C++ Ошибка при выделении памяти под двумерный массив
#include <iostream> using namespace std; class array { int size1, size2; char **matr; public: array(int n1, int n2); char &push(int i, int j); char get(int i, int j);
Выведено изображение, нужно на нем нарисовать по фигуру (квадрат, круг) C++
Выведено изображение, нужно на нем нарисовать по фигуру (квадрат, круг). размер и положение я должен выбрать.
C++ Создание полноценного файла http://www.cyberforum.ru/cpp-beginners/thread20739.html
Подскажите пожалуйста, вот я в интернете нашёл функцию написанную на C++, что в него надо дополнить что бы в далнейшем его компилировать в Visual C++ 6 и создать рабочее приложение? Заранее...
C++ Дана строка. Подсчитать, сколько различных символов встречается в ней. Вывести их на экран. Помогите решить задачи: 1. Найти все простые натуральные числа, не превосходящие n, двоичная запись которых представляет собой палиндром, т.е. читается одинаково слева направо и справа налево. 2.... подробнее

Показать сообщение отдельно
sofia
Сообщений: n/a

рекурсивная функция слияния строк - C++

12.01.2009, 20:54. Просмотров 890. Ответов 0
Метки (Все метки)

Помогите пожалуйста с рекурсией!

Мне нужно написать программу в C:
получить от пользователя два стринга first_string и second_string(консольное приложение)

1.проверить что каждый из них содержит только символы алфавита( )и они отсортированы по коду Аски.

2.Если да,то соединить оба стринга в новую строку и отсортировать ее по коду Аски.
Нельзя пользоваться никакими циклами,указателями и т.д.,только основными ф-ми библиотеки
<stdio.h> и <string.h> и использовать рекурсию.

Я сделала только часть 1 и возникла проблема в том что происходят лишние обращения к фунции
merge_strings(str1,index1+1,str2,index2,result,index3);

Я не понимаю как правильно делать return

Код
#include <stdio.h>
#include <string.h>

int merge_strings(char str1[255], int index1,char str2[255],int index2, char result[510], int index3);


void main()
{

char first_string[255];
char second_string[255];
int index_1=0;
int index_2=0;
char merge_result[510];
int index_3=0;
int result1;


   printf("Enter first string:\n");
  
   scanf("%s",first_string);
   getchar();
   printf("Enter second string:\n");
   scanf("%s",second_string);
  
   getchar();
   result1=merge_strings(first_string,index_1,second_string,index_2,merge_result,index_3);
   if(result1==1)
   {
       printf("Answer:\n%s\n",merge_result);
   }
   else 
	   printf("Input incorrect\n");
}



int merge_strings(char str1[255], int index1,char str2[255],int index2, char result[510], int index3)
{

int len1,len2,len3;

len1=strlen(str1);
len2=strlen(str2);



	if(index1+1<len1 && index3==0)
	{
      if((str1[index1]>='A' && str1[index1]<='Z') || (str1[index1]>='a' && str1[index1]<='z'))
	  {
		 if((str1[index1+1]>='A' && str1[index1+1]<='Z') || (str1[index1+1]>='a' && str1[index1+1]<='z'))
		 { 

			    if(str1[index1]<str1[index1+1])
				{
                 
				 merge_strings(str1,index1+1,str2,index2,result,index3);
                      
				}
			    else
				 return 0; 

		 }else return 0;

	  }else return 0;

       printf("valid str1\n");
 
	}// end if(index1+1<len1)

	else if(index2+1<len2 && index3==0) //check string2
	{   		       	    		{
          if((str2[index2]>='A' && str2[index2]<='Z') || (str2[index2]>='a' && str2[index2]<='z'))
		  {
		    if((str2[index2+1]>='A' && str2[index2+1]<='Z') || (str2[index2+1]>='a' && str2[index2+1]<='z'))
			{
  
			  if(str2[index2]<str2[index2+1])
			  {
                
				 merge_strings(str1,index1,str2,index2+1,result,index3);                      
			  }
			  else
				return 0;
								 
			}  else return 0;	                     
			                     						   
		  } else return 0;	
				
		} //if(index2+1<len2)
            printf("valid str2\n");
index1=0;
index2=0;
	}// else //check string2

}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru