Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с классами, Мольба о помощи начинающего. 
V
    Опции темы
lexusblack
  Дата 8.4.2010, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 7.4.2010

Репутация: нет
Всего: нет



Прошу не пинать сильно. Поступил на дистанционное обучение. У нас есть курс С++. Но суть проблемы не в том. 
Задание по лабораторной
Построить класс для определения количества слов строке.

Решение

Код


#include "stdafx.h"
#include "iostream"
#include "conio.h"

using namespace std;

class AmountWords{
public:
    AmountWords();
    void Word(char*);
    void PrintAmount();
private:
    int Amount;
    char* MyString;
    char *tokenPtr;
    char *NextTokenPtr;
};

AmountWords::AmountWords(){
    Amount= 0;
}

void AmountWords::Word(char* MyString){  //24
    //tokenPtr = strtok_s (MyString," ");
    tokenPtr = strtok_s (MyString, " ", &NextTokenPtr);
    while (tokenPtr != NULL) {
        cout << tokenPtr <<'\n';
        //tokenPtr = strtok_s (NULL," ");
        tokenPtr = strtok_s (NULL, " ", &NextTokenPtr);
        Amount++;
    }
}
void AmountWords::PrintAmount(){ //32
    cout<<Amount<<'\n';
}

int main()
{
    char* MyString="111 222 333";
    AmountWords Words;
    Words.Word(MyString); //40
    Words.PrintAmount();
    cout<<endl;
    cout << ("\nFor an output press <Enter>:");
    _getch();

    return 0;
}



Суть проблемы - При такой строке MyString - вылетает ошибка:

"AmountWordsClass.exe": Загружено: "C:\Users\lexus\Documents\Visual Studio 2008\Projects\AmountWordsClass\Debug\AmountWordsClass.exe", Символы загружены.
"AmountWordsClass.exe": Загружено "C:\Windows\System32\ntdll.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\kernel32.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\KernelBase.dll"
"AmountWordsClass.exe": Загружено: "C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_96748342450f6aa2\msvcp90d.dll", Символы загружены.
"AmountWordsClass.exe": Загружено: "C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_96748342450f6aa2\msvcr90d.dll", Символы загружены.
"AmountWordsClass.exe": Загружено "C:\Windows\System32\apphelp.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\AppPatch\AcLayers.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\sspicli.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\msvcrt.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\rpcrt4.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\user32.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\gdi32.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\lpk.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\usp10.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\shell32.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\shlwapi.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\ole32.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\oleaut32.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\userenv.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\profapi.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\winspool.drv"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\mpr.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\imm32.dll"
"AmountWordsClass.exe": Загружено "C:\Windows\System32\msctf.dll"
Первый этап обработки исключения в "0x5cbb6728 (msvcr90d.dll)" в "AmountWordsClass.exe": 0xC0000005: Нарушение прав доступа при записи "0x008b782b".
Необработанное исключение в "0x5cbb6728 (msvcr90d.dll)" в "AmountWordsClass.exe": 0xC0000005: Нарушение прав доступа при записи "0x008b782b".

Помогите разобраться не ради института - а ради себя. Хочется понять где я что не так сделал. Я не прошу переделать задание. Я прошу помоч разобраться.

З.Ы. Заранее спасибо тем кто уделит мне внимание.
PM MAIL   Вверх
azesmcar
Дата 8.4.2010, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



замени
Цитата(lexusblack @  8.4.2010,  10:14 Найти цитируемый пост)
    char* MyString="111 222 333";

на
Код

char* MyString=new char[12];
strcpy_s(MyString, 12, "111 222 333");


Это сообщение отредактировал(а) azesmcar - 8.4.2010, 10:24
PM   Вверх
bsa
Дата 8.4.2010, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



...
а код
Код
#include "iostream"
#include "conio.h"
на
Код
#include <iostream>
#include <conio.h>

PM   Вверх
lexusblack
Дата 8.4.2010, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 7.4.2010

Репутация: нет
Всего: нет



Огромное спасибо в моей лабораторке будет ссылка на Ваш сайт.
PM MAIL   Вверх
mes
Дата 8.4.2010, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(lexusblack @  8.4.2010,  09:14 Найти цитируемый пост)
Помогите разобраться 

Цитата(lexusblack @  8.4.2010,  09:14 Найти цитируемый пост)
 char* MyString="111 222 333";

чтоб в дальнейшем не сталкиваться с такими проблемами, строку нужно присваивать либо
массиву 
Код

char Mystring[]  = "111 222 333";

или как показал azesmcar,

 либо к указателю  на константу..
Код

const char* MyString="111 222 333";



Это сообщение отредактировал(а) mes - 8.4.2010, 13:04


--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 8.4.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



да...и 
Код

delete [] MyString;

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

Это сообщение отредактировал(а) azesmcar - 8.4.2010, 13:25
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.