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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2013, 01:11   #1
Anton221
Новичок
Джуниор
 
Регистрация: 14.09.2013
Сообщений: 2
По умолчанию Проблема...

По чучуть учу с++
До этого в интсе учили паскаль (
Задание :
Написать функцию Detab(n), заменяющую символы табуляции во введенном тексте на заданное число пробелов (в данном случае – n), а также программу, вызывающую эту функцию (ввод символов должен осуществляться с клавиатуры). Вывести измененный текст на экран.


Подскажите что не так, или может мой алгоритм вообще не правильный...
Код:
// ConsoleApplication4.cpp: определяет точку входа для консольного приложения.
//
#include <iostream>	// для использования cin и cout
#include <conio.h>	// для использования getch()
#include <stdio.h>

char Debtan(char st[],int m)
{
		char st2[100];
		int k;
		k=1;
	  for (int i = 0; i < strlen(st); ++i)
			if (st[i]!='\t' )
				{ st2[k]=st[i];					
					k++;
				}
			else 
			{ for (int j = 0; j=m; ++j) 
							{ st2[k]=' ';
								k++;
							}

			}
			return st2;
}
int main()
{
	using namespace std;// использовать пространство имён std, в котором
				// объявлены cin и cout 
	
	char s[40];
	cout << "Введите строку\n";
	cin >> s;	// ввод строки
	cout << "Введите кол-во пробелов\n";
	int n;
	cin >> n;
	char s2[100]=Debtan(s,n);
	cout << s2;
	getch();	// ждать нажатия любой клавиши
	return 0;
}
Anton221 вне форума Ответить с цитированием
Старый 14.09.2013, 10:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что не так
А что именно не так? По мне в целом все ок. Единственное чтобы я внес так это
Код:
char st2[100]={0};
Чтоб результирующую строку инициализировать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2013, 13:20   #3
Anton221
Новичок
Джуниор
 
Регистрация: 14.09.2013
Сообщений: 2
По умолчанию

Вот на строку return st2;
: error C2440: return: невозможно преобразовать "char [100]" в "char"
Anton221 вне форума Ответить с цитированием
Старый 14.09.2013, 13:38   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

функция написана таким образом, что она возвращает один единственный символ.
Но в качестве этого символа ты пытаешься вернуть целую строку.
_Bers вне форума Ответить с цитированием
Старый 14.09.2013, 14:36   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

У Вас ещё в этой строке ошибка:
Код:
for (int j = 0; j=m; ++j)
Это бессконечный цикл.
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неблокирующий сокет Си проблема с закрытием, проблема с закрытием сокетов в цикле mnx_vol C/C++ Сетевое программирование 0 06.11.2012 13:57
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37