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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2010, 00:49   #1
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию Строки неправильное выполнение программы

Программа должна выводить длину строки и размещать в обратном порядке строку. Но не правильно выполняется программа. Что я сделал не так?


Код программы:
Код:
//line.h
class Line
{
protected:
	char *Str;
public:
	Line(char* K);
	~Line();
	int LengthStr();
};

class Line2: public Line
{
public:
	Line2(char* K) : Line(K) {};
	~Line2();
    void OppositeStr();
};

//.cpp
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include "line.h"
using namespace std;

Line::Line(char* K)
{
	Str = K;
}

int Line::LengthStr()
{
	int Length;
	Length = strlen(Str);
	return Length;
}


void Line2::OppositeStr()
{
int len = LengthStr();
for (int i = 0; i < len / 2; i++)
 swap(Str[i], Str[len - i]);
cout << "Obratnii poradok - " << Str;
}

//main.cpp
#include <iostream>
#include <string.h>
#include "stdafx.h"
#include "line.h"
using namespace std;

void main()
{
	char L[40] = ("12345");
	Line2 *K = new Line2(L);

	K->OppositeStr();
	cout << "\r\n";
	cout << "Dlinna stroki - " << K->LengthStr();
	cout << "\r\n";
}
ArniLand вне форума Ответить с цитированием
Старый 30.03.2010, 01:00   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Вы, в OppositeStr терминирующий ноль в начало строки переносите, потому она становится как бы пустой. Исправьте это
netrino вне форума Ответить с цитированием
Старый 30.03.2010, 01:17   #3
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию

в oppositeStr поменял в цикле значение i с 0 на 1, результат выводит теперь, но не совсем правильно меняет. Мне нужно чтобы к примеру строка 12345 менялась на 54321, а оно меняется 15342.
ArniLand вне форума Ответить с цитированием
Старый 30.03.2010, 01:23   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

i оставьте равным 0.
Код:
swap(Str[i], Str[len - i - 1]);
netrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение командной строки z3rg Общие вопросы C/C++ 4 17.04.2009 22:26
Запуск программы на выполнение из другой программы. ViNcHeStEr Паскаль, Turbo Pascal, PascalABC.NET 6 18.06.2008 14:33
Выполнение командной строки в Delphi Alar Общие вопросы Delphi 0 29.10.2006 19:44