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

Помогите с задачей! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ динамический массив из ДЛЛ http://www.cyberforum.ru/cpp-beginners/thread5223.html
Здравствуйт, с наступившим!!!! Покажите, на примере, как вызват динамический массив из ДЛЛ, ну приблезительно сделать такое: в ДЛЛ есть код: ........ HRADAR_API double* oRr_GetPointerDistanceFromTargetToArray()//<-------- { return OR.GetPointToArray(); };
C++ Помогите с лабой! В Си нужно из файла вызвать матрицу. В этой матрицы найти все ненулевые элементы и написать все значения и индексы этих значений.. Вот код..ток там чтот не так..посмотрите пожалуйста!!! #include<stdio.h> #include<alloc.h> matrica(int **a, int *b, int *c, int m, int n, int i, int j, int *k) { for(i=0;i<m;i++) for(j=0;j<n;j++) if(a!=0) http://www.cyberforum.ru/cpp-beginners/thread5222.html
C++ HELP
Здрасте. Не пойму почему два одинаковых проекта(часа 3 сравнивал, чуть ли не до запятой:(((() работают по разному!!!
Нужна прога, на языке С, С++ или Deiphi. Точнее три. C++
Тема: Анализ статистической независимости и удаление трендов. Спектральный анализ. Если эти понятия знакомы-отзовитесь.
C++ Определить в матрице фигуру с максимальной суммой http://www.cyberforum.ru/cpp-beginners/thread5172.html
В этом разделе я уже постил эту задачку, но дабы помочь тем кто хочет помочь мне у меня есть вариант кода(соответственно), где то там ошибка(не исключаю что код решен ваапще по неправильному алгоритму). Если вам не нравица мой код, прошу, предъявите свой! Вообщем условие: Условие: Квадратная матрица размером NxN заполнена целыми числами из промежутка . Назовем фигурой всякую часть этой...
C++ Помогите пожалуйста со структурой Помогите пожалуйста с задачей: Для каждого предприятия отрасли (количество предприятий не более 100) известен план и процент выполнения плана по семи показателям. Определить для каждого предприятия и по отрасли средний процент выполнения плана. Результаты расчетов распечатать в виде таблицы: Справка о предприятиях отрасли со средним процентом выполнения плана от ..... до ..... ... подробнее

Показать сообщение отдельно
Гость
Сообщений: n/a

Помогите с задачей! - C++

09.01.2008, 17:11. Просмотров 1231. Ответов 0
Метки (Все метки)

Привет! Помогите пожалуйста разобраться с задачей:
Написать программу, которая считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте.
Так вот на поиске самого длинного слова и его сохранения я и застрял.
Вот текст программы:
Код
#include <fstream.h>
#include <windows.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>

char* Rus(const char* text);
void Find(char to[], char from[]);

int main(){
    
    ifstream fin("c:\\cpp\\text.txt", ios::in, ios::nocreate);
    if(!fin){cout<<Rus("Ошибка открытия файла")<<endl; getch(); return 1;}
    
    const int len=81;
    char line[len], word[len], MaxWord[len];
    int Len_MaxWord= 0;
    while(fin.getline(line, len)){
        cout<<Rus(line)<<endl;
        Find(word, line);
        if(strlen(word) > Len_MaxWord){
            Len_MaxWord= strlen(word);
            strcpy(MaxWord,word);
        }
    }
    if(!Len_MaxWord){cout<<Rus("Пустой файл")<<endl; getch(); return 1;}
    cout<<endl<<Rus("Самое длинное слово >> ");
    cout<<Rus(MaxWord)<<endl;
    cout<<Rus("Его длина >> ")<<Len_MaxWord<<endl;
    getch();
    return 0;
}    
///////////////////////////////////////
char bufRus[256];
char* Rus(const char* text)
{
    CharToOem(text, bufRus);
    return bufRus;
}
///////////////////////////////////////
void Find(char to[], char from[]){
    int i= 0, Len_Count, Len_Max, iMax;
    iMax= -1; Len_Max= 0;
    char *p= from;
    char* c;
    while(*p != 0){
        while(ispunct(*p) || isspace(*p)) p++;
        char* c= p;
        for(Len_Count= 0; !ispunct(*p) && !isspace(*p) && *p != 0;
        p++, Len_Count++);
        if(Len_Count > Len_Max){
            Len_Max= Len_Count;
            iMax= *(p- Len_Max);
        }
    }
    int j= 0;
    if(iMax== -1) return;
    else{
        for(i= iMax; i< iMax+ Len_Max; j++, i++) to[j]= from[i];
        to[j] = 0;
    }
    return;
}
///////////////////////////////////////
Функция Find ведет себя не совсем правильно. Если текст в файле английский, то в принципе, она верно находит слово, но почему то здесь
Код
iMax= *(p- Len_Max);
указатель оказываеться на 3 позиции левее, чем нужно. Хотя предварительно проверяю указатели(p, c) они находяться где нужно: c- на 1 букве, p- на последней.
А вот если текст в файле русский, то все идет кувырком(неправильный размер слов, пропуск пробелов и знаков пунктуации). Я конечно догадываюсь, что это связанно с непониманием русской кодировки VC++ 6.0, но как это реализовать? Использовать функцию Rus при поиске и сохранении в символьных массивах?
Кто может помогите пожалуйста!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru