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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2010, 22:14   #1
Peperovich
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 20
По умолчанию Найдите ошибку

Есть задача
Дана строка, содержащая полное имя файла. Выделить из строки название последнего каталога (без символов "\"). Если файл содержится в корневом каталоге, то вывести символ "\".
Вот код

#include <iostream.h>
#include <math.h>
#include <string.h>
int main()
{
char *S,*S1=new char[128];

int i,t;
i=0;t=0;
cout<<"Input address file\n";
cin>>S;
for (S;*S!='\0';++S)
{
if (*S=='\\') i++;
}
if (i==1) cout<<"\\"; else
{
for (S;*S!='\0';++S)
{
if (*S=='\\') t++;
if ((t==i-1) && (t<i) && (*S!='\\')) strncat(S1,S,1);
} cout<<S1;
}
}
С выводом знака \ если файл в корневой директори находится все норм, а вот с копированием имени подкаталога не получается выводит две запятых и все. Помогите пожалуйста.
Peperovich вне форума Ответить с цитированием
Старый 28.05.2010, 22:34   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Код:
#include <iostream>
#include <string>

using namespace std;

int getLastSlash(const string &s)
{
	int i;
	for(i = s.size() - 1; i > 0 && s[i] != '\\'; i--);
	return i;
}

int main()
{
	string s, result;
	int i,t;
	cout << "Input address file\n";
	cin >> s;
	i = getLastSlash(s);
	if(i >= 0)
		s.erase(s.begin() + i, s.end());
	i = getLastSlash(s);
	if(i >= 0)
		result.assign(s.begin() + i + 1, s.end());
	else
		result = "\\";
	cout << result;
	cin.get();cin.get();
	return 0;
}
Не забывай выделять код в тег [CODE]
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 28.05.2010, 22:59   #3
Peperovich
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 20
По умолчанию

Спасибо за ответ. И у меня ругается на это
Код:
using namespace std;
. И как бы ваш код написан более профессионально я в нем не могу разобраться мне бы исправить мой код думаю там дело в
Код:
strncat(S1,S,1);
Peperovich вне форума Ответить с цитированием
Старый 28.05.2010, 23:06   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
И у меня ругается на это
Код:
#include <iostream>
#include <string>
БЕЗ .h на концах.

П.С. По вашему коду:
Код:
char *S,*S1=new char[128];
Память под S не выделили, только для S1!

Код:
cin>>S;
for (S;*S!='\0';++S)
Как повезет...

П.П.С. Память надо освобождать, если взяли.

Последний раз редактировалось p51x; 28.05.2010 в 23:15.
p51x вне форума Ответить с цитированием
Старый 28.05.2010, 23:26   #5
Peperovich
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 20
По умолчанию

как повезет это в смысле? Цикл работает как надо а вот копирование посимвольно не пашет
Peperovich вне форума Ответить с цитированием
Старый 12.06.2010, 19:27   #6
Peperovich
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 20
По умолчанию

Как я выяснил переменная t почему то не считается. Кто нить поможет в чем тут "собака зарыта"?
Peperovich вне форума Ответить с цитированием
Старый 12.06.2010, 19:31   #7
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Цитата:
Сообщение от Peperovich Посмотреть сообщение
Как я выяснил переменная t почему то не считается. Кто нить поможет в чем тут "собака зарыта"?
Если используешь мой код, то там переменная t вообще не нужна
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 12.06.2010, 19:32   #8
Peperovich
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 20
По умолчанию

Ну ты обьясни как сделать чтобы не выдавало ошибку на это
Код:
using namespace std;
Peperovich вне форума Ответить с цитированием
Старый 12.06.2010, 19:36   #9
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Какую ошибку выдаёт?
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 12.06.2010, 19:40   #10
Peperovich
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 20
По умолчанию

Declaration syntax error и на 6 строчку ) expected
Peperovich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите ошибку *natali* Помощь студентам 3 08.11.2009 17:30
Найдите ошибку St1fler92 Помощь студентам 4 26.05.2009 15:23
найдите ошибку Сова Паскаль, Turbo Pascal, PascalABC.NET 9 11.02.2009 18:46
Найдите ошибку! geniy JavaScript, Ajax 4 04.12.2007 16:22