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

Дан текстовый файл (файл для чтения во вложениях) с упрощённым каталогом выставки собак. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подсчитать количество элементов матриц http://www.cyberforum.ru/cpp-beginners/thread600628.html
Подсчитать количество элементов матриц Х(5,4) и У(3,5),удовлетворяющих условиям a<=x<=b и a<=y<=b .Количество элементов вычислить в функции.Предусмотреть функцию формирования элементов матрицы.Help написать на голом СИ
C++ Однонаправленный список: переделать код под консоль Имеется три файла, помогите пожалуйста, мне нужно эту задачу реализовать в Консольном приложении в Визуал студио 2008, Чтоб на консоль выводилось, и какие дополнительные библиотеки и где надо подключить?!??! #include "stdafx.h" #include "conio.h" int main(void) { list A; A.add(5.); http://www.cyberforum.ru/cpp-beginners/thread600602.html
Дана целочисленная прямоугольная матрица C++
Дана целочисленная прямоугольная матрица.Определить: 1)Количество строк,не содержащих ни одного нулевого элемента;Вывести эти строки на экран. 2)Максимальный и минимальный элемент и их порядковые номера
Перевод целого десятичного числа в строку и обратно в десятичное число C++
перевод целого десятичного числа в строку и обратно в десятичное число, результат вывести в 3 столбика и 20 строк. заранее спасибо)
C++ Удалить из строки цифры http://www.cyberforum.ru/cpp-beginners/thread600437.html
Всем хорошего дня! Указатели - Написать две программы. В программах при обращении к элементу массива нельзя использовать дополнительную переменную для вычисления его адреса. В первой программе исходные данные вводить с клавиатуры. Во второй программе < censored /> Задание: 1). Удалить из строки цифры (Дополнительные строки не создавать) 2). , Правила3.15. Запрещено создавать темы с...
C++ Определить номера столбцов содержащих только положительные элементы Добрый день. Задание:определить номера столбцов содержащих только положительные элементы, вычислить суммы этих элементов для каждого столбца. Написал прогу для ввода матрицы и по идее она должна проверять на положительные элементы, но не проверяет((( Помогите пожалуйста написать эту проверку и вычислить суммы элементов каждого столбца. #include "stdafx.h" #include "stdio.h" int... подробнее

Показать сообщение отдельно
SanGu
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 5

Дан текстовый файл (файл для чтения во вложениях) с упрощённым каталогом выставки собак. - C++

08.06.2012, 15:21. Просмотров 424. Ответов 1
Метки (Все метки)

ЗАДАНИЕ ПО ЭКЗАМЕНУ ПО ПРОГРАММИРОВАНИЮ НА ЯЗЫКЕ С++ (можно писать и на С. не запрещается)
Всё по сабжу ниже.


Дан текстовый файл (файл для чтения во вложениях) с упрощённым каталогом выставки собак.

Структура текста следующая.

Собаки записаны по породам. внутри одной породы по классам. Запись каждой собаки состоит из номера участника, имени собаки, имён владельцев, названия населённого пункта, названия государства.

Каждая строка текста принадлежит одному из следующих видов:
  • Порода - строка начинается номером стандарта в скобках.
  • Название класса - строка, начинающаяся буквой.
  • Запись собаки - строка, которая начинается номером без скобок. Имя собаки стоит после номера, начинается буквой и заканчивается перед текстом "om:" и кончаются перед запятой. Название населённого пункта начинается после первой запятой и заканчивается перед следующей. Название государства начинается после последней запятой и кончается переводом строки.

ЗАДАНИЯ

Провести анализ текста. Максимальное количество баллов можно получить, написав для каждой подзадачи отдельные функции.

Результат анализа вывести в файл.

Имена файлов (исходного файла и файла с результатами задавать параметрами в коммандной строке.

Задание 1. (макс. 40 баллов)

Вывести список классов и количество собак каждого класса по породам.
Вывдо должени иметь вид:

Класс1: порода1(количество), порода2(количество),....
Класс2: порода1(количество), порода2(количество),....
...


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

Задание 2. (макс. 30 баллов)


Вывести список государств с количеством выставляемых собак и список их имён в следующем виде:

Государство 1 (кол-во)
имя1
имя2
...

Государство 2 (кол-во)
имя1
имя2
...



Для первого задания у меня есть код (кому интересно)
ПО ЭТОМУ НУЖЕН КОД ДЛЯ ВТОРОГО ЗАДАНИЯ (желательно на основе первого, того что ниже)
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <iostream>
#include <fstream>
#include <cstdlib>
 
using namespace std;
 
int decode(string line) {
string indicator = "om:";
size_t found;
int check_1 = 0; // Check whether we do have '/' symbol
int check_2 = 0; // Check whether we do have '(' symbol
int check_3 = 0; // Check whether we do have ')' symbol
int length = line.length();
for (int i=0; i<length; i++) {
if (line.at(i) == '/') check_1 = 1;
if (line.at(i) == '(') check_2 = 1;
if (line.at(i) == ')') check_3 = 1;
}
found = line.find(indicator);
if (found!=string::npos) {
return 1; // This string indicates dog entry
} else if (check_1 == 1 && check_2 == 0 && check_3 == 0) {
return 2; // This string indicates class entry
} else if (check_1 == 1 && check_2 == 1 && check_3 == 1) {
return 3; // This string indicates breed entry
} else {
return 0;
}
}
 
string translate(string multilang, int l) {
string delimieter = "/";
string est;
string eng;
size_t found;
int position;
found = multilang.find(delimieter);
if (found!=string::npos) {
position = int(found);
if (position > 1) {
est = multilang.substr(0, position);
eng = multilang.substr(position+2);
if (l == 1) return est;
if (l == 2) return eng;
}
}
}
 
int main(int argc, char* argv[]) {
char buffer[500];
int lang;
string lines[1000];
int dogs_total = 0;
int dogs_tmp = 0;
int dogs_in_class_tmp = 0;
int class_tmp = 0;
int breeds_total = 0;
int breeds_tmp = 0;
int class_total = 0;
int breeds[100]; // Maximum breed quantity
ifstream file;
if (argc>1) {
file.open(argv[1], ios::binary); // open file in binary mode
} else {
file.open("txt.txt", ios::binary); // open file in binary mode
 
 
}
if (!file.is_open()) {
cout << "Error opening file\n";
}
cout << "Enter 2 for English language. Pane 1 eesti keeles info saamiseks.\n";
cin >> lang;
if (!(lang == 1 || lang == 2)) {
lang = 2;
cout << "Your default language is English \n";
} else {
switch(lang) {
case 2:
cout << "Your choice: English \n";
break;
case 1:
cout << "Teie valik: Eesti keel \n";
break;
}
}
cout << endl << endl << "______________________" << endl;
int i=0;
while (!file.eof()) {
file.getline(buffer,500);
lines[i] = buffer;
i++;
}
for (int j=0; j<i; j++) {
if (decode(lines[j]) == 1) {
dogs_total++; // Calculating dogs total
}
}
for (int k=108; k>=0; k--) {
if (decode(lines[k]) == 3) {
cout << "----------------------" << endl;
cout << translate(lines[k], lang) << endl;
cout << "----------------------" << endl;
cout << (float)dogs_tmp/dogs_total << "%" << endl;
cout << "______________________" << endl << endl << endl;
dogs_tmp = 0;
class_tmp = 0;
breeds_total++;
}
if (decode(lines[k]) == 2) {
cout << translate(lines[k], lang) << endl;
cout << (float)dogs_in_class_tmp/dogs_total << "%" << endl << endl;
dogs_in_class_tmp = 0;
class_total++;
}
if (decode(lines[k]) == 1) {
dogs_in_class_tmp++;
dogs_tmp++;
}
 
}
 
}
Вложения
Тип файла: txt eksamC25.txt (6.2 Кб, 17 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru