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

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

Войти
Регистрация
Восстановить пароль
 
SSSprinter
0 / 0 / 0
Регистрация: 01.09.2011
Сообщений: 34
#1

Работа с подключаемым файлом - C++

18.12.2012, 19:52. Просмотров 363. Ответов 5
Метки нет (Все метки)

требуется подключить файл (в нем текст на англ. языке) и вывести текст на экран. затем необходимо запросить символ. программа должна вывести слово, в котором наибольшее число раз встречается этот символ. я нашел способ только как найти вообще количество совпадений.
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdio.h"      /*файл ввода/вывода при работе с подключаемым текстом*/
#include "stdafx.h"
#include "stdlib.h"
#include <string.h>     /*библиотека для работы со строками*/
#include "iostream"     /*для организации ввода-вывода*/
#include <windows.h>    /*для русского языка*/
#include <conio.h>      /* содержит функции для работы с экраном */
#include <ctype.h>
#include <locale.h>
 
#include <clocale>
#include<cstring>
 
 
using namespace std;    /*чтобы не писать каждый раз std::cin*/ 
HANDLE hStdout; 
 
///-----------Функция для отображения русских букв-----------///
char bufRus[256];
 
char* Rus(const char* text)
{
CharToOemA(text,bufRus);
return bufRus;
}
////////////////////////////////////////////////////////////////
 
 
int numb_words(char*);// функция вычисления кол-ва слов в строке
//bool isrusalpha(char*);// isalpha() для кирилицы
 
 
int _tmain(int argc, _TCHAR* argv[])
{   
//  setlocale(LC_ALL,"Rus");                    /*для отображенения русского языка*/
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
    SetConsoleTextAttribute(hStdout, BACKGROUND_INTENSITY); 
    FILE *fp=fopen ("my_file.txt","r");         /*открытие файла на чтение (относительный путь файла)*/
    if (NULL == fp)                             /*проверяем наличие файла*/
    {   
        SetConsoleTextAttribute(hStdout,12);    /*задаём цвет текста*/
        printf (Rus("Не удалось открыть файл!\n"));
        return 0;   
    }
 
    char str[1024] = "";                        /*переменная, куда читать файл*/
    int i=0;
    while (!feof (fp)) //проверка признака конца файла
    {
    str[i]=fgetc(fp);
    SetConsoleTextAttribute(hStdout, 11);
    printf("%c", str[i]);
    i++;    
    }
 
    fclose(fp);                                 /*закрытие соединения с файлом*/
 
    printf(Rus("\n\n"));
    SetConsoleTextAttribute(hStdout,14);
    printf(Rus("Введите символ или букву на английском языке\nПрограмма определит слово с наибольшим вхождением заданного символа\n"));
    SetConsoleTextAttribute(hStdout,12);
 
 
// основное действие программы
    char ch = 0;
    ch = getch(); /*запрашиваем 1 символ с клавиатуры*/ 
    printf("%c", ch); /*выводим символ на экран*/
    printf(("\n"));
    int sovp=0;
 
    for (int index=0; index<= sizeof(str); index++)
    {
    if (str[index] == ch) sovp++;
    }
 
        printf(Rus("\nсовпадений в тексте:  ")); 
        printf ("%i\n", sovp); //*выводим символ на экран*
 
    /*printf("Слово с наибольшим вхождение заданного символа\n");*/
    
 
 
 
 
 
 
    system("pause");
 
    return 0;
}
вот после того как программа считывает символ и выводит его, как я понимаю, нужно искать слова с этим символом, и записывать их в переменную. потом условие, если в той переменной меньше того символа, а есть слово с большим, то перезаписываем.
для меня проблема в том, что я не знаю, как искать это слово, и считать в нем количество символов. похожих примеров не могу найти, только на других языках, в книжках то же про это ничего не нашел. просмотрел уже больше 5 книг. помогите пожалуйста написать эту часть программы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 19:52     Работа с подключаемым файлом
Посмотрите здесь:

Переделать программу так, чтобы каждый из кейсов был подключаемым модулем - C++
При модульном программировании к основному модулю программы подключаются несколько вспомогательных модулей, в которых реализованы процедуры...

Работа с файлом - C++
Помогите если не затруднит. Есть текстовый файл(примерно такой): A asdada qweqw A ijiijij nvbjk rtrt A

работа с файлом - C++
объясните, пожалуйста, что тут происходит. особенно строчку, где ofs.write(reinterpret_cast&lt;char const*&gt;(arr), n * sizeof(*arr)); ...

Работа с файлом - C++
как изменить код,чтобы можно было при следующем вызове функции, дописывать все эти значения в конец файла,а не переписывать файл заново? ...

Работа с файлом - C++
в общем есть некая решенная задача которая имеет классы и методы(ввода и вывода) для них, нужно ювелирно переделать методы так чтоб они...

Работа с файлом - C++
Помогите пожалуйста. Надо подсчитать в файле количество букв &quot;A&quot; и записать это число в конец файла.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
18.12.2012, 19:56     Работа с подключаемым файлом #2
Цитата Сообщение от SSSprinter Посмотреть сообщение
требуется подключить файл
так нужно подключить файл или прочитать его из программы? Потому что это разные вещи и в твоем коде файл как раз читается, а не подключается.
SSSprinter
0 / 0 / 0
Регистрация: 01.09.2011
Сообщений: 34
18.12.2012, 20:07  [ТС]     Работа с подключаемым файлом #3
Kastaneda,
задание звучит так: Задан текст. Определить слово с наибольшим вхождением заданного символа.
нужно подключить файл, вывести текст на консоль, и найти слово

Добавлено через 1 минуту
вы хотите сказать, что я рано закрыл соединение с файлом?

Добавлено через 2 минуты
вроде как нужно даже создавать 2 переменных. В одну сохранять текущее максимальное количество вхождений. В другую - слово. Проходить по всем словам. Если вхождение символа в очередное слово больше, чем в переменной, то менять ее значение.
тогда после того, как я вывожу текст на экран, необходимо его как то в массив загнать?
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
18.12.2012, 20:24     Работа с подключаемым файлом #4
Цитата Сообщение от SSSprinter Посмотреть сообщение
вы хотите сказать, что я рано закрыл соединение с файлом?
Да не, не в этом дело. Прочитать файл и подключить файл это разные вещи, ну ладно, пропустим.

Логика программы организована не правильно, сначала нужно считать нужный символ, совпадение которого следует искать, потом читать файл по словам, подсчитывая вхождение заданного символа в слове. Это число хранить в переменной, если очередное слово содержит больше вхождений символа, чем сдержит переменная, то присваеваем это значение переменной, если нет, то читаем следующее слово. Ну и само слово тоже следует хранить отдельно, чтоб не искать его потом еще раз.

Добавлено через 1 минуту
Цитата Сообщение от SSSprinter Посмотреть сообщение
вроде как нужно даже создавать 2 переменных. В одну сохранять текущее максимальное количество вхождений. В другую - слово. Проходить по всем словам. Если вхождение символа в очередное слово больше, чем в переменной, то менять ее значение.
Да, собственно это я и написал, не внимательно прочитал.
SSSprinter
0 / 0 / 0
Регистрация: 01.09.2011
Сообщений: 34
18.12.2012, 20:53  [ТС]     Работа с подключаемым файлом #5
начало верное ?
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
#include "stdio.h"      /*файл ввода/вывода при работе с подключаемым текстом*/
#include "stdafx.h"
#include "stdlib.h"
#include <string.h>     /*библиотека для работы со строками*/
#include "iostream"     /*для организации ввода-вывода*/
#include <windows.h>    /*для русского языка*/
#include <conio.h>      /* содержит функции для работы с экраном */
#include <ctype.h>
#include <locale.h>
 
#include <clocale>
#include<cstring>
 
using namespace std;    /*чтобы не писать каждый раз std::cin*/ 
 
///-----------Функция для отображения русских букв-----------///
char bufRus[256];
 
char* Rus(const char* text)
{
CharToOemA(text,bufRus);
return bufRus;
}
////////////////////////////////////////////////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
printf(Rus("Введите символ или букву на английском языке\nПрограмма определит слово с наибольшим вхождением заданного символа\n"));
    char ch = getch();
    printf("%c", ch); /*выводим символ на экран*/
    printf(("\n"));
    FILE *fp=fopen ("my_file.txt","r");         /*открытие файла на чтение (относительный путь файла)*/
    if (NULL == fp)                             /*проверяем наличие файла*/
    {   
 
        printf (Rus("Не удалось открыть файл!\n"));
        return 0;   
    }
        char str[1024] = "";                        /*переменная, куда читать файл*/
    int i=0;
    while (!feof (fp)) //проверка признака конца файла
    {
    str[i]=fgetc(fp);
    printf("%c", str[i]);
    i++;    
    }
 
    return 0;
}
Добавлено через 1 минуту
шаг переменная, куда читать файл верный ?
39 строка char str[1024] = ""; /*переменная, куда читать файл*/

Добавлено через 7 минут
так а как теперь подсчитывать вхождения заданного символа в слове???? я это и не умею делать, подскажите пжл

Добавлено через 11 минут
тут нужно использовать scanf ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2012, 21:02     Работа с подключаемым файлом
Еще ссылки по теме:

Работа с файлом - C++
Написать программу, которая считывает текст из файла и выводит на экран только цитаты, то есть предложения, заключенные в кавычки.

работа с файлом) - C++
Помогите пжлст написать прогу.Задание: Найти среднее количество знаков препинания в абзаце.Текст считывать с файла. Добавлено через...

Работа с файлом - C++
вот смотрите есть файл chisla.txt В нем содержатся цифры ( Например 101 258 164) Как мне изъять из файла ТОЛЬКО 1 число (например 101)???

Работа с файлом - C++
Программа для записи/прочитки текстовых файлов. Почему когда ввожу строку, в файл сохраняется только часть строки(до первого пробела)? ...


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

Или воспользуйтесь поиском по форуму:
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
18.12.2012, 21:02     Работа с подключаемым файлом #6
Цитата Сообщение от SSSprinter Посмотреть сообщение
тут нужно использовать scanf ?
Да, если работаешь с сишным функциями, то используй fscanf(). Это тот же scanf(), только для чтения из файла.
Цитата Сообщение от SSSprinter Посмотреть сообщение
так а как теперь подсчитывать вхождения заданного символа в слове???? я это и не умею делать, подскажите пжл
Ну если не будешь пользоваться <algorithm>, то сделай отдельную функцию, где проходи циклом по слову и считай кол-во нужных символов.
Цитата Сообщение от SSSprinter Посмотреть сообщение
шаг переменная, куда читать файл верный ?
39 строка char str[1024] = ""; /*переменная, куда читать файл*/
Файл нужно читать по словам, думаю такой большой буфер не нужен, я бы размер 64 сделал.
Yandex
Объявления
18.12.2012, 21:02     Работа с подключаемым файлом
Ответ Создать тему
Опции темы

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