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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sofia
Сообщений: n/a
#1

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

12.01.2009, 20:54. Просмотров 877. Ответов 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

}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2009, 20:54     рекурсивная функция слияния строк
Посмотрите здесь:

C++ Составить функцию конкатенации (слияния) двух строк
Рекурсивная функция C++
C++ Рекурсивная функция!
рекурсивная функция C++
C++ Рекурсивная функция
C++ функция слияния файлов
Рекурсивная функция C++
C++ Рекурсивная функция
Рекурсивная функция С++ C++
Рекурсивная функция C++
Нужна рекурсивная функция для переворачивания строк C++
C++ Рекурсивная функция

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 20:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru