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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 15:44   #1
Kumigy
Пользователь
 
Регистрация: 11.08.2010
Сообщений: 23
По умолчанию Работа со списками

Задача написать функцию, формирующую новую строку из двух других строк по следующему правилу: берется 1-е слово первой строки, затем 1-е слово второй строки, далее 2-е слово первой строки, за ним 2-е слово второй строки и т.д. Слова разделены пробелами. Исходные строки могут содержать разное количество слов.
(всё это сделать нужно с помощью классов и списков)

Загвоздка заключается в том что преподавателю не нравится что я создаю списки каким то странным образом, он хочет чтобы: формирование списка - отдельный метод, объединение строк - тоже метод и ещё метод вывода результирующего предложения.
И ещё такое вот условие которое он мне назвал , чтобы я его соблюл это - вместо простого
Код:
 
char* data;
сделать
Код:
 
char* data[10]
Тоесть как я понимаю текст должен распознаваться по 10 символов?

Как это будет выглядеть?

MyList.h
Код:
#ifndef MY_LIST_H
#define MY_LIST_H
 
class MyList
{


public:
	MyList();
	~MyList();


public:
	char* append( char* p );								
	char* operator[]( int index );							
	int count();											


private:
	struct Elem 
	{
		char* data;											
		Elem* next;											
	};


private:
	Elem* first;											
	Elem* last;												
	Elem* cur_elem;											
	int numb_elem;											
		
};
#endif
Main.cpp
Код:
#include <stdio.h>
#include <windows.h>										

#include "MyList.h"											

void forming( char* s, char* word, MyList* l )				
{
	printf( "Enter string: \n" );
	fgets( s, 256, stdin );									
	s[ strlen( s ) - 1 ] = '\0';							

	word = strtok( s, " " );								
	while ( word != NULL )
	{
		l->append( word );									
		word = strtok( NULL, " ");
	}
}

int main( int argc, char* argv[] )
{
	char* str1 = new char[ 256 ];							
	char* str2 = new char[ 256 ];

	MyList* list1 = new MyList();							
	MyList* list2 = new MyList();

	char* slovo = new char[ 256 ];							

	forming( str1, slovo, list1 );							
	forming( str2, slovo, list2 );

	
	MyList* list3 = new MyList();							
	int N;
	int flag;
	if ( list1->count() < list2->count() )
	{
		N = list1->count();									
		flag = 1;
	}
	else
	{
		N = list2->count();
		flag = 2;
	}

	for ( int i = 0; i < N; i++ )							
	{
		list3->append( ( *list1 )[ i ] );
		list3->append( ( *list2 )[ i ] );
	}

	if ( flag == 1 )
		for ( int i = N; i < list2->count(); i++ )			
			list3->append( ( *list2 )[ i ] );
	else
		for ( int i = N; i < list1->count(); i++ )
			list3->append( ( *list1 )[ i ] );

	
	printf("____________________ \n\n");

	for( int i = 0; i < list3->count(); i++ )
	{
		printf( "%s", ( *list3 )[ i ] );					
		printf( " " );
	}

	getchar();
	return 0;
}

MyList.cpp
Код:
#include "MyList.h"

//-----------------------------------------------
MyList::MyList()
{	
	first = last = cur_elem = 0;
	numb_elem = 0;
}

//-----------------------------------------------
MyList::~MyList()
{	
	cur_elem = first;
	while ( cur_elem != 0 )
	{
		Elem* e = cur_elem;
		delete e->data;
		cur_elem = e->next;
		delete e;
	}	
	numb_elem = 0;
}

//-----------------------------------------------
char* MyList::append( char* p )	
{	
	Elem* e = new Elem;
	cur_elem = last;
	if ( numb_elem == 0 )									
	{
		first = last = cur_elem = e;						
		cur_elem->next = 0;
		cur_elem->data = p;
	}
	else													
	{
		cur_elem->next = e;
		last = cur_elem = e;
		cur_elem->next = 0;
		cur_elem->data = p;
	}
	numb_elem++;											
	return cur_elem->data;
}

//-----------------------------------------------
char* MyList::operator[]( int index )	
{	
	cur_elem = first;										
	int i = 0;
	do
	{
		if ( i == index )
		{
			return cur_elem->data;
		} 
		cur_elem = cur_elem->next;
		i++;
	}
	while ( cur_elem != 0 );
	return 0;
}

//-----------------------------------------------
int MyList::count()		
{	
	return numb_elem;
}

Последний раз редактировалось Kumigy; 22.12.2010 в 20:48.
Kumigy вне форума Ответить с цитированием
Старый 23.12.2010, 16:24   #2
Kumigy
Пользователь
 
Регистрация: 11.08.2010
Сообщений: 23
По умолчанию

Кто может помогите пожалуйста(
Kumigy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со списками puzik_off Фриланс 8 30.12.2009 12:02
c++. Работа со списками megavolt91 Помощь студентам 0 14.06.2009 21:31
Работа со списками Dimo444ka Помощь студентам 2 01.06.2008 16:34
Работа со списками. radist Паскаль, Turbo Pascal, PascalABC.NET 4 07.05.2007 00:05