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

Написать программу которая в текстовом файле будет искать слова с наибольшим количеством заданны букв - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести на экран список слов, у которых есть префикс (несколько букв), которые задаются с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread911333.html
Вывести на экран список слов, у которых есть префикс (несколько букв), которые задаются с клавиатуры.
C++ Напечатать все слова-палиндромы,которые есть в этой строке собственно сабж. буду очень благодарен тому кто поможет,а то я на грани отчисления,а уроки по c++ пролежал дома с переломом ноги =( и вот 1 вариант http://www.cyberforum.ru/cpp-beginners/thread910245.html Напечатать все слова-палиндромы,которые есть в этой строке (см. 1 вариант). http://www.cyberforum.ru/cpp-beginners/thread911298.html
Максимальный элемени матрицы заменить на нуль и вывести на печать угол матрицы, в котором расположен этот максимальный элемент C++
собственно сабж. буду очень благодарен тому кто поможет,а то я на грани отчисления,а уроки по c++ пролежал дома с переломом ноги =(
собственно сабж. буду очень благодарен тому кто поможет,а то я на грани отчисления,а уроки по c++ пролежал дома с переломом ноги =( C++
/delete
C++ Вычислить номер элемента массива ближайшего к среднеарифметического его значения http://www.cyberforum.ru/cpp-beginners/thread911294.html
собственно сабж. буду очень благодарен тому кто поможет,а то я на грани отчисления,а уроки по c++ пролежал дома с переломом ноги =(
C++ Сформировать массив строк, удалить из него одинаковые строки собственно сабж. буду очень благодарен тому кто поможет,а то я на грани отчисления,а уроки по c++ пролежал дома с переломом ноги =( подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
25.06.2013, 11:36     Написать программу которая в текстовом файле будет искать слова с наибольшим количеством заданны букв
Цитата Сообщение от exwingold Посмотреть сообщение
не могли бы вы поподробнее (если можно по русски) прокомментировать строки кода
мне не все в нем понятно
учтите, что по моему описанию коня чаще всего вырисовывается крокодил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//Варианты с Си'ными функциями были удалены чтобы не запутаться в комментах. Суть одна и та же
#include <iostream>
#include <fstream>
#include <cstring>
 
//Функция возвращает количество вхождений символа findChar в строку str
int getCount(char * str, char findChar){
    int tempCount=0;//Количество вхождений
    for(;*str;++str)//Цикл до тех пор, пока не дойдем до завершающего нуля
        tempCount += (*str==findChar);//Если текущий символ равен искомому, то к количеству прибавляется значение true(1), иначе - false(0)
    return tempCount;//Возвращаем количество вхождений
}
 
//Функция возвращает ноль, если строка не удовлетворяет требованияю "каждый символ findStr входит в str минимум один раз"
//Функция возвращает сумму количества вхождений каждого символа из findStr в str
int isCorrect(char * str, char * findStr){
    int tempCount=0;//Суммарное колличество вхождений
    for(;*findStr;++findStr){//проходим по всем символам строки findStr
        int rv=getCount(str,*findStr);//определям количество вхождений символа *findStr в str
        if(!rv)//Если количество вхождений == нулю, то значит символ не входит в строку
            return 0;//Поэтому выходим из функции возвращая 0
        tempCount+=rv;//Если же символ входит в строку, тогда прибавляем количество вхождений этого символа к общей сумме
    }
    return tempCount;//Возвращаем всю сумму
}
 
int main(){
    char tempWord[256]; //Массив для хранения считанного из файла слова (255 символов плюс ноль)
    char resultWords[256][256];//Массив для хранения подходящих слов (256 слов по 255 символов+нулевой)
    char findSymbols[256];//Массив для хранения искомых символов (255 символов плюс ноль)
    int countWords=0;//Кол-во найденных слов
    int countMax=0;//Максимум символов
    std::cout<<"Input symbols ->";//Вывод сообщения
    std::cin>>findSymbols;//Получаем символы, которые будем искать
    std::ifstream inFile("input.txt");//Открываем фаил input.txt
    while(inFile>>tempWord){//Считываем из файла в tempWord(считывание будет от текущей позиции в файле до первого разделителя(пробел, табуляция, перенос строки) и если считывание успешно, то заходим в цикл.
        int tempCount=isCorrect(tempWord,findSymbols);//Проверяем считанное слово на корректность, число вхождений присваиваем переменной tempCount
        if(tempCount >= countMax && tempCount>0){//Если число корректно (tempCount>0) И число вхождений больше или равно максимальному количеству вхождений(tempCount >= countMax)
            if(tempCount!=countMax){//Если текущее число вхождений не равно максимальному
                countWords=0;//Обнуляем количество найденых слов, т.к. найден новый максимум и старые слова уже не подходят
                countMax=tempCount;//Максимуму присваиваем текущее количество вхождений
            }
            strcpy(resultWords[countWords++],tempWord);//Копируем найденное слово в наше словохранилице, увеличивая при этом переменную, хранящую количество найденных слов
        }
    }
    if(countWords>0){//Если нашли хотябы одно слово, тогда
        for(int i=0;i<countWords;++i)//Цикл по всем найденным словам
            std::cout<<resultWords[i]<<std::endl;//Вывод слова
    }else{//если же слов не найдено, тогда
        std::cout<<"0 words"<<std::endl;//Выводим сообщение
    }
    //Ну и закрытие файла при использовании Си'шных функций. В C++ варианте с потоками всё само закроется.
    //fclose(inFile);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru