Официальный сайт студ.городка НГТУ
Программирование и БД » [help] подскажите в си++ 

#1  15.05.08 13:15

[help] подскажите в си++

есть такой вод код:

Код::

#include <stdio.h>
#include <conio.h>

void reverse_string(char *string){
	int size = 0;
	while(string[size]!= '\0')
	{
		size++;
	}
	if(size != 0)
	{
		char* result = &string[size-1];
		for(int i = 0;i<(size/2);i++)
		{
        		char vs = *result;
			*result = string[i];
			string[i] = vs;
			result--;
		}
	}
 }


void main()
{ 
	   char string[100];
	   puts("Input string: ");
	   gets(string);
	
   reverse_string(string);
   puts(string);

}

он переворачивает строку наоборот, т.е. hello world -> dlrow olleh
а надо чтобы менялся только порядок букв в слове hello world -> olleh dlrow

Подскажите как это сделать:)

Исправлено Nuts@ (15.05.08 13:36)

Offline

#2  15.05.08 14:36

Re: [help] подскажите в си++

Парсером(strtoke вроде) получай состовляющие и для них вызывай этот первертыш.

Offline

#3  15.05.08 14:37

Re: [help] подскажите в си++

разбивай массив по словам и потом полученные массивы в обратном порядке

Offline

#4  15.05.08 14:55

Re: [help] подскажите в си++

$piRtik, да я понимаю принцип, у меня не получается реализовать его(((

Offline

#5  15.05.08 15:35

Re: [help] подскажите в си++

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

Offline

#6  15.05.08 15:42

Re: [help] подскажите в си++

лучше методами конечного автомата реализовать

Offline

#7  15.05.08 16:40

Re: [help] подскажите в си++

$piRtik, было бы не плохо)))
Если тебе не сложно....

Offline

#8  15.05.08 20:37

Re: [help] подскажите в си++

Jaguar, +1. Читаешь посимвольно, до пробела в стек, как пробел - из стека всё выкладываем, пробел тоже выкладываем и потом по новой. Код неохота и некогда :)

Исправлено Kosh_Mar (15.05.08 20:37)

Offline

#9  15.05.08 21:11

Re: [help] подскажите в си++

Код: C:

void main()
{ 
	char string[100];
	puts("Input string: ");
	gets_s(string);
	int	len = (int) strlen(string);	
	char* temp = string;
	for(int i = 0; i < len; i++)
	{
		if(string[i] == ' ')
		{
			string[i] = 0;
			reverse_string(temp);
			string[i] = ' ';
			temp = &string[i]+1;
		}
	}
	reverse_string(temp);
	puts(string);
}

на скорую руку... если в качестве разделителей рассматривать лишь пробелы

Исправлено kvazimodo (15.05.08 21:12)

Offline

#10  15.05.08 21:34

Re: [help] подскажите в си++

Код: cpp:

#include <string.h>
 
char * func(char * str)
{	
	char *p = new char[strlen(str) + 1];
	*p = 0;	
 
	for(char * token = strtok(str, " "); token != NULL; token = strtok(NULL," ")) {
		strcat(p, strrev(token));
		strcat(p, " ");		
	}		
	return p;
}

Offline

#11  16.05.08 01:06

Re: [help] подскажите в си++

Спасибо всем большое!)

Offline

#12  16.05.08 22:26

Re: [help] подскажите в си++

работает?)

Offline

#13  17.05.08 00:11

Re: [help] подскажите в си++

$piRtik, работает))
а что? не должно :-D

только вот препод докопался, надо еще сделать проверку на полиандром...это когда слово читается с обоих сторон одинаково...

Offline

#14  17.05.08 01:04

Re: [help] подскажите в си++

Nuts@ написал(а):

препод докопался, надо еще сделать проверку на полиандром...это когда слово читается с обоих сторон одинаково

Очень интересно, чем препод объясняет необходимость такого теста? У нас за такой тест кое-кто из преподов убил бы...

Offline

#15  17.05.08 09:14

Re: [help] подскажите в си++

Nuts@ написал(а):

полиандром..

полиндром он называется, если я еще не забыл...
а проверку не помню как делали) лень вспоминать) там не трудно)

Offline

#16  17.05.08 09:27

Re: [help] подскажите в си++

"палиндром"

стоимость сравнения в этом примере примерно такая же, как стоимость копирования. сравнивать придется всегда, в случае не палиндрома - еще и копировать, т.е. переворачивать

Offline

#17  17.05.08 14:54

Re: [help] подскажите в си++

del

Исправлено Kosh_Mar (17.05.08 14:59)

Offline

#18  18.05.08 21:42

Re: [help] подскажите в си++

Kosh_Mar, препод объясняет это заданием к лабе) все просто....)

Offline

Программирование и БД » [help] подскажите в си++ 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.068 сек.
Выполнено 14 запросов.