14.06.2011, 16:10 | #1 (permalink) | ||
Новичок
Регистрация: 14.06.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Конструктор класса, C++, Visual Studio 2008
Помогите разобраться с ошибкой. Задание программы: Ввести в программу текст, отсортировавать слова по количеству повторений - от большего к меньшему, вывести текст на экран. Код программы: Цитата:
Выдаваемые компилятором ошибки: Ошибка 5 error C2062: тип "char" не требуется k:\учёба\разработка и стандартизация\la3\la3\la3.cpp 48 la3 Ошибка 6 error C2143: синтаксическая ошибка: отсутствие ";" перед "{" k:\учёба\разработка и стандартизация\la3\la3\la3.cpp 49 la3 Ошибка 7 error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) k:\учёба\разработка и стандартизация\la3\la3\la3.cpp 49 la3 В строках: //Перегрузка конструктора копирование по умолчанию Цитата:
|
||
14.06.2011, 16:10 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Возможно, что решение вашего вопроса имеется где то тут Visual Basic 2008 программирование очень нужна помощь Microsoft Visual C 2008 redistributable x86 |
14.06.2011, 23:03 | #2 (permalink) |
Новичок
Регистрация: 14.06.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
тут просто куча ошибок!!!!
как можно вызывать конструктор Text K(ttext);??? только Text(ttext) инициализуруете свой конструктор, потом если хотите вызвать какие то методы своего класса, то можно сделать так Text K; K.Show(); K.SortWord(); это пока что я вижу, и лучше сделайте свой код более читабельным!!! class Text { public: Text(); ~Text(); Text (char ttext); const char* Show(void); void SortWord(void); private: char* str; int size; int* k; }; если хотите писать комментарии, то обычно используются /* comment */ |
16.06.2011, 02:38 | #3 (permalink) |
Новичок
Регистрация: 14.06.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
//Составить частотный словарь слов заданного текста. Текст может вводится с клавиатуры или из файла. В качестве текста можно использовать текст программы. Определить слова, встречающиеся чаще всех и реже всех. Пользователь выбирает вариант варианты ввода текста:
//· с клавиатуры, //· из файла, с указанием имени файла, //· текст данной программы. // //Производится сохранение самого часто и реже встречающегося слова в файл. ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// //подключаемые файлы #include <ctype> #include <fstream> #include <windows> #include <iomanip> #include "stdafx.h" #include <string.h> #include <locale> #include <stdio.h> #include <iostream> //подключение поля namespase using namespace std; //////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////класс текст///////////////////////////////////// //должен включать в себя: переменные слов str; длины текста, из которого формируются слова size; //количества повторений слов k;; функции сортировки слов Sortword(сперва находится количество повторений //каждого слова в тексте, описывается в переменной k, затем сортируются слова по количеству повторений - //от максимального к минимальному); фукнцию вывода слов Show (выводится строка, в которой содержатся max-но и //min-но встречающеися в тексте слова); конструктор Text (принимает текст, записанный в переменной ttext, //инициализирует str, size и k); деструктор.///////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// class Text { //объявления: public: //конструктор по умолчанию Text(); //деструктор ~Text(); //конструктор с передаваемым текствовым массивом в качестве параметра Text (char ttext); //функция вывода слов Show const char* Show(void); //функция сортировки слов void SortWord(void); private: //переменная слов char* str; //переменная длины слова int size; //переменная количества повторений слов int* k; }; ///////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////Конструктор с передаваемым текствовым массивом в качестве параметра/////////////////// //должен находить длину текста size, разбивать текст на слова str, инициализировать количество повторений //каждого слова k///////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////// Text (auto char ttext) { //инициализируем переменную для поиска пробелов в тексте char ch = '0'; //находим длину текста int size = strlen(ttext); //заводим цикл, в котором: for (int i = 0 ; i < size ; i++) { //выводим указатель на первое вхождение пробела int m = char* strrchr(char ttext, char ch); // вычисляем количество символов от начала текста до первого пробела int с = m-i; // копируем эти символы из ttext в char char *strncpy (char *ttext, char *str, int c); //инициализируем массив повторений функции k k= new int[size+1];} } //////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////Деструктор класса////////////////////////////////////////// //Должен чистить память от переменных слов str, длины текста size и количества повторений k //////////////////////////////////////////////////////////////////////////////////////////////// Text::~Text() { //очищаем память массива слов delete[] str; //очищаем память длины текста delete size; // очищаемпамть количества повторений слов delete[] k; } //Функция сортировки слов (по возрастанию) void Text::SortWord(void) { int Word = 0; //Счетчик слов char** ArrWord = new char*[size+1]; //Массив слов char *buffer = new char[size+1]; //Буферная переменная char *ptr = buffer; //Указатель на буферную переменную memset(buffer,0,size+1); //Обнулим буфрную переменную char *pl; char c = ' '; for (int i=0; i <= strlen(str); i++) //Обойдем по-символьно всю строку { *pl = *strrchr(str, c); if (!pl) //Если не пробел { char *ptr; *ptr++ = str[i]; //Пишим в буферную переменную и сдвигаем указатель k[i]=1; } else if (strlen(buffer)>0) //Если же управляющий или разделитель и длина буферной переменной >0 { ArrWord[Word] = new char[size+1]; //Выделим память под слово strcpy(ArrWord[Word++],buffer); //Скопируем буферную переменную в слово memset(buffer,0,size+1); //Обнулим память буферной переменной ptr = buffer; //Поставим указатель на начало буферной переменной } else {} } for (int i=0; i<Word-1; i++) /*в цикле обходим все лова*/ {for (int j=1; j<Word; j++) {if (ArrWord[i]==ArrWord[j]) /*если слова под обоими объектами одинаковы */ {k[i] = k[i] + 1;}/* количество повторений увеличиваем на 1*/ }} memset(str,0,size+1); //Обнулим строку //Сортируем слова по длине //char Arrword[100]; for (int i = 0; i<Word-1; i++)//Обойдем весь массив слов { int mkol=k[i];//mkol присваивается значение k текущее char * Max = ArrWord[i];// символьной переменной Max присваивается указатель на пермененную с индексом i массива Arrword int pos = i; // значению целочисленной переменной pos присваивается значение i for (int j=i; j<Word; j++) //Обойдем все слова с i { if (mkol < k[pos]) { Max = ArrWord[j]; mkol = k[j]; pos = j; } if (ArrWord[i]==Max) {} else {strcpy(buffer, ArrWord[i]); strcpy (ArrWord[i],ArrWord[j]); strcpy (ArrWord[j], buffer); } Max = ArrWord[i]; mkol = k[i]; pos = i; strcat(str,ArrWord[i]); } if ( (i+1) != Word) strcat(str," "); } for (int i = 0; i<Word; i++) { delete[] ArrWord[i]; } delete [] buffer; delete [] ArrWord; } |
16.06.2011, 02:38 | #4 (permalink) |
Новичок
Регистрация: 14.06.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////Функция вывода слов Show/////////////////////////////////////////////// //функция должна принимать отсортированный относительно количества повторений k массив слов str, //выделять в нём максимально и минимально встречающиеся слова, выводить в главную функцию /////////////////////////////////////////////////////////////////////////////////////////////////// const char* Text::Show(void) { ////вводим слова: str //объявления: //переменная, определяющая количество слов int Word = 0; //массив слов char** ArrWord = new char*[size+1]; //Буферная переменная char *buffer = new char[size+1]; //Указатель на буферную переменную char *ptr = buffer; //Обнуление буфрной переменной memset(buffer,0,size+1); //выделение слов из текста и запись в массив //объявление: //указателя на вхождение пробела char *pl; // переменной для пробела char c = ' '; // цикл для всего текста for (int i=0; i <= strlen(str); i++) { //находим указатель на вход пробела в тексте //Условие: //Если не пробел, if (!pl) { //объявляем указатель char *ptr; //Пишим в переменную str и сдвигаем указатель *ptr++ = str[i]; } //иначе: else // Условие 2: //Если управляющий или разделитель и длина буферной переменной >0 if (strlen(buffer)>0) { //Выделим память под слово ArrWord[Word] = new char[size+1]; //Скопируем буферную переменную в переменную слово strcpy(ArrWord[Word++],buffer); //Обнулим память буферной переменной memset(buffer,0,size+1); //Поставим указатель на начало буферной переменной ptr = buffer; } //иначе: else {} ////закончили ввод слов ////вывод на печать максимально и минимально встречающегося слова: //копируем переменные max и min встречающихся слов в сроку str //объявляем и инициализируем переменную пробела char buf='0'; //объявляем указатель на переменную const char *buff = &buf; //копируем в переменную str переменную слова с индексом 0 (Максимально встречающееся слово) strcpy(str,ArrWord[0]); //копируем в переменную str переменную пробела strcpy(str, buff); // копируем в переменную str переменную слова с индексом Word (минимально встречающееся слово) strcpy(str, ArrWord[Word]); //ВЫВОД СТРОКИ return str; ////также ещё дожно быть реализовано вывод количество повторений max иmin встречающихся слов //k[0]; //k[Word]; //// } ////цикл по i завершился } //////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////главная функция программы////////////////////////////////////////////////// //должен производиться ввод текста - с командной строки и из файла; создание объекта класса и //передача ему текста в качестве параметра; реализованы функция сортировки слов и функция вывода слов; //сохранение максимально и минимально встречающегося слова в отдельный файл///////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////// int _tmain(int argc, _TCHAR* argv[]) { //поключение русского языка setlocale(LC_ALL, "Russian"); ////здесь должен быть предложен ввод из файла или из командной строки //с командной строки: //инициализируем переменную для текста auto char* ttext; // ввод текста cout<<"введите текст"<< endl; cin>> ttext; //ввод из файла: //// //выполнение программы: //объявление класса Text K; //сортировка слова K.SortWord(); //вывод слов K.Show(); ////здеь должен быть предложен вывод слов - на экран или соханение в файл //на экран: //std::cout<<K.Show()<<std::endl; //в файл: //// return 0; } |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|