Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2016, 15:25   #1
Temost
Новичок
Джуниор
 
Регистрация: 02.04.2015
Сообщений: 1
По умолчанию Подсчет слов с заглавной буквой в файле

Не могу сделать подсчет слов содержащих заглавную букву

Код:
// popitka_nomer667.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include <iostream>
#include <locale.h>
#include <fstream>//файловый ввод/вывод
#include <conio.h>
using namespace std;

void main(){
	setlocale(0, "");
	cout << "Исходные данные:" << endl;
	ifstream f;
	char *FName = "E:\\slova.txt";
	int* Line = new int[10]; //Номер строки в начальном файле 
	int* WordsCount = new int[10]; //Количество слов, удовлетворяющих заданию
	int StrNumber = 0; // Номер строки
	int B = 0;
	char* buf = new char[10]; // Массив для считывания длины строк, буфер строки
	char** result = new char*[10]; // массив-результат
	for (int i = 0; i< 10; i++)
	{
		result[i] = new char[80];
		WordsCount[i] = 0;
		Line[i] = i;
	}
	fstream file(FName); // открываем поток для чтения
	while (!file.eof())
	{
		file.getline(buf, 80);//считываем строку в переменную buf
		int end = strlen(buf);//функция возвращает кол-во символов в строке
		cout << buf << endl; // вывод исхоной строки
		int j, x, h = 0, k = 0;
		for (int i = 0, FirstIndex = 0; i < end; i++)
	{
			if ((buf[i + 1] == ' ') || (buf[i + 1] == ',') || (buf[i + 1] == '.') || (buf[i + 1] == ';') || (buf[i + 1] == ':') || (buf[i + 1] == '\n') || (i + 1 == end)){ // проверка на конец слова
				int LastIndex = i;
				for (int x = FirstIndex; x <= LastIndex; x++)
				{
					if ((buf[x] >= 'А') & (buf[x] <= 'Я'))
						h++;
				}
				if (h>0)
				{
					for (j = FirstIndex, k; j <= LastIndex +1; j++, k++)
					{
						result[StrNumber][k] = buf[j]; // Запись слова в массив-результат
						result[StrNumber][k + 1] = '\0';
						
					}

					WordsCount[StrNumber]++;
				
					
					// Переход к след. слову
				}
				FirstIndex = LastIndex + 2;
				}
	}
		StrNumber++;
	}

	file.close();//закрываем поток
	cout << endl;
	for (int i = 0; i < StrNumber - 1; i++)
	for (int j = i + 1; j < StrNumber; j++)
	if (WordsCount[i] < WordsCount[j]){//Сортировка(метод "пузырька")
		int buff = WordsCount[i];
		WordsCount[i] = WordsCount[j];
		WordsCount[j] = buff;
		buf = result[i];
		result[i] = result[j];
		result[j] = buf;
		buff = Line[i];
		Line[i] = Line[j];
		Line[j] = buff;
	}


	cout << "Измененный массив: " << endl;
	cout << endl;
	for (int i = 0; i < StrNumber; i++)
	if (WordsCount[i] != 0)
		cout << "Строка " << Line[i] << ": " << result[i] << endl;
	char *filename = new char[80]; //Имя фаила
	cout << endl;
	cout << "Введите имя выходного файла: ";
	cin >> filename;
	ofstream out(filename); // Открываем поток для записи в фаил
	for (int i = 0; i < StrNumber; i++)
		out << "Строка" << Line[i] << ": " << result[i] << endl;
	out.close();
	_getch();
}
Temost вне форума Ответить с цитированием
Старый 12.04.2016, 15:31   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

В чем именно проблема?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос: поставить пробел перед заглавной буквой Vitoz85 Microsoft Office Excel 4 21.11.2018 16:01
Файловые операции на C. Подсчет кол-ва слов в файле GreeNYA Общие вопросы C/C++ 1 22.12.2013 18:28
pascal, программа на подсчет в текстовом файле количества слов, состоящих из четырех букв Катя Миронова Помощь студентам 3 19.03.2013 19:23
слова с заглавной буквой (доработка) St@ter Помощь студентам 0 13.01.2013 13:22
Как сделать, чтобы слово пирамида всегда писалось с Заглавной буквой asale Microsoft Office Word 3 22.01.2009 20:51