Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
#1

Нужно сделать по заданию задачу, выдает ошибку при компилировании - C++

27.11.2013, 13:44. Просмотров 234. Ответов 5
Метки нет (Все метки)

Создать класс для работы сo строками. Разработать элементы класса:
a. Поля:
• * указатель на char - хранит адрес динамически выделенной памяти;
• int n.
b. Конструктор, позволяющий создать строку из n символов.
c. Методы, позволяющие:
• подсчитать количество знаков препинания в строке;
• заменить в строке все строчные символы на прописные;
• прочитать символ из заданной позиции.
d. Свойства:
• возвращающее общее количество элементов в строке (доступное только для чтения);
• позволяющее установить значение поля, в соответствии с введенным значением строки с клавиатуры, а также получить значение данного поля (доступно для чтения и записи).
[code]

class String
{
public:
String(char* string = "")
{
n = strlen(string) + 1;
str = new char[n];
memcpy(str, string, n);
}

String(char* string, size_t size) // конструктор, позволяющий создать строку из size символов
{
n = size + 1;
str = new char[n];
memcpy(str, string, n * sizeof(char));
str[size] = 0;
}

~String()
{
if (str)
delete str;
}

void print()
{
std::cout << str << std::endl;
}

int const getnum() // кол-во символов в строке
{
return n - 1;
}

char const getchar(int n) // символ из позиции n
{
return str[n - 1];
}

void upper() // в верхний регистр
{
for (int i = 0; i < n; i++)
str[i] = toupper(str[i]);
}

int const punctuation() // кол-во знаков препинания
{
int count = 0;

for (int i = 0; i < n + 1; i++)
if (ispunct(str[i]))
count++;

return count;
}

private:
char* str;
int n;
};


int _tmain(int argc, _TCHAR* argv[])
{
String str("linkin park");

str.upper();
str.print();

std::cout << str.getnum() << std::endl;
std::cout << str.punctuation() << std::endl;
std::cout << str.getchar(1) << std::endl;

system("PAUSE");
return 0;
}

[\code]
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2013, 13:44     Нужно сделать по заданию задачу, выдает ошибку при компилировании
Посмотрите здесь:

Массив: при компилировании исходника компилятор выдает ошибку - C++
# include &lt;iostream&gt; # include &lt;math.h&gt; # include &lt;stdio.h&gt; using namespace std; int main () { const int ishod = 15; const...

неверно выдает результат при компилировании - C++
добрый вечер, дана задача :&quot;1. Вычислить медианы треугольника со сторонами a, b, c по формулам(фото)&quot; но при отладке вне зависимости от...

Изучаю книгу, выдает ошибку в коде, подскажите где и что нужно сделать? - C++
Добрый день, я вот тут изучаю C++, переписал упражнение в компилятор а он выдает ошибку, подскажите пожалуйста как исправить? #include...

нужно реализовать код, выдает ошибку - C++
помогите реализовать код, выдает ошибку Label3-&gt;Caption=strftime(&quot;int %B&quot;);

Нужно сделать алгоритм, решающий задачу за время н - C++
Всем привет! Есть задача: Исходные данные В первой строке записано целое число N — количество бильярдных шаров (1 ≤ N ≤ 100000). В...

При b=1 выдает ошибку - C++
# include &lt;iostream&gt; # include &lt;math.h&gt; using namespace std; double Func( double s, double b); void main () { double c=0;...

Нужно сделать данную задачу с матрицей в С++.Для знающих С++ - C++
Здравствуйте.Прошу помочь решить данную задачу.Я ещё учусь и потому многого не знаю.Пытаюсь решить такую задачу:Заполнить матрицу...

сделать мат лаб у самого на ноуте никак не ставится он ошибку выдает - C++

Выдает ошибку при построении - C++
List.h #pragma once #include &lt;iostream&gt; using namespace std; struct A { int key; }; struct listStruct { A a;

Выдает ошибку недостаточно прав для чтения. Что сделать чтобы работало? - C++
И объясните пожалуйста, все ли правильно и нужно ли эти файлы самому создавать, если да то где. Дан файл, содержащий несколько строк....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,995
27.11.2013, 13:53     Нужно сделать по заданию задачу, выдает ошибку при компилировании #2
у вас ни 1 хедера нет , сами писали код или опять чужое?
zss
Модератор
Эксперт С++
6289 / 5892 / 1910
Регистрация: 18.12.2011
Сообщений: 15,129
Завершенные тесты: 1
27.11.2013, 14:05     Нужно сделать по заданию задачу, выдает ошибку при компилировании #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
...
int const punctuation() // кол-во знаков препинания
{
    int count = 0;
    for (int i = 0; i < n; i++)
                if (ispunct(str[i]))
    count++;
    return count;
}
...
int main()
....
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.11.2013, 14:21     Нужно сделать по заданию задачу, выдает ошибку при компилировании #4
Ошибок при компиляции куча, но даже, когда они будут исправлемы, в твоем классе будет не хватать конструктора копий и оператора равно. Не забудь!
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
27.11.2013, 21:14  [ТС]     Нужно сделать по заданию задачу, выдает ошибку при компилировании #5
Чужое конечно, я сама вообще бред бредячий делаю, прочитала уже кучу литературы и не могу понять как и что...мне это не дано, но задачку нужно сдать, иначе будет плохоСделайте как надо, очень прошу

Добавлено через 2 часа 6 минут
Цитата Сообщение от Мария1501 Посмотреть сообщение
В конструкторе, который принимает укатель на char, не проставляется терминирующий ноль. Во втором конструкторе, терминирующий ноль проставляется в неправильном место (должен проставляться в n-й символ).
Как вот это сделать?

Добавлено через 22 минуты
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ошибок при компиляции куча, но даже, когда они будут исправлемы, в твоем классе будет не хватать конструктора копий и оператора равно. Не забудь!
ЧТо за конструктор копий и оператора равно? Куда это ставить?

Добавлено через 2 часа 39 минут
Со всеми изменениями программа выглядит так:

Код
#include <cstdlib>
#include <iostream>

using namespace std;

class String
{
public:
	String(char* string = "")
	{
		n = strlen(string) + 1;
		str = new char[n];
		memcpy(str, string, n);
	}

	String(char* string, size_t size)  //êîíñòðóêòîð, ïîçâîëÿþùèé ñîçäàòü ñòðîêó èç size ñèìâîëîâ
	{
		n = size + 1;
		str = new char[n];		
		memcpy(str, string, n * sizeof(char));
		str[size] = 0;
	}

	~String()
	{
		if (str)
		delete str;
	}

	void print()
	{
		std::cout << str << std::endl;
	}

	int const getnum() //êîë-âî ñèìâîëîâ â ñòðîêå
	{
		return n - 1;
	}

	char const getchar(int n) // ñèìâîë èç ïîçèöèè n
	{
		return str[n - 1];
	}

	void upper()  // â âåðõíèé ðåãèñòð
	{
		for (int i = 0; i < n; i++)
			str[i] = toupper(str[i]);
	}

	int const punctuation() // êîë-âî çíàêîâ ïðåïèíàíèÿ
	{
 int count = 0;
 for (int i = 0; i < n; i++)
 if (ispunct(str[i]))
    count++;
    return count;
	}

private:
	char* str;
	int n; 
};


int main()
{
	String str("I!love!!!programming!");

	str.upper();
	str.print();

	std::cout << str.getnum() << std::endl;
	std::cout << str.punctuation() << std::endl;
	std::cout << str.getchar(1) << std::endl;

	system("PAUSE");
	return 0;
}
В конструкторе, который принимает укатель на char, не проставляется терминирующий ноль. Во втором конструкторе, терминирующий ноль проставляется в неправильно место (должен проставляться в n-й символ). Как это сделать в данном коде?
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.11.2013, 21:17     Нужно сделать по заданию задачу, выдает ошибку при компилировании #6
Цитата Сообщение от Мария1501 Посмотреть сообщение
не могу понять как и что...
Цитата Сообщение от Мария1501 Посмотреть сообщение
Как вот это сделать?
Цитата Сообщение от Мария1501 Посмотреть сообщение
ЧТо за
Цитата Сообщение от Мария1501 Посмотреть сообщение
Куда это
Если только вчера(или на прошлой неделе или пару недель назад, недавно, короче) начал изучать язык С++. НЕ НАДО БРАТЬСЯ ЗА КЛАССЫ И ДИНАМИЧЕСКУЮ ПАМЯТЬ, перескакивая через темы! Изучай всё по порядку! (В том порядке как в нормальных учебниках главы идут!)
Yandex
Объявления
27.11.2013, 21:17     Нужно сделать по заданию задачу, выдает ошибку при компилировании
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru