|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите решить задачу по С++ |
|
C/C++ - [решено] Помогите решить задачу по С++
|
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Да, я понимаю чо это нагло с моей стороны, и сам бы наврное написал бы, харошь балдеть студенты, пора учиться, но у меня немного другая ситуация. Не буду вдаваться в подробности.
Я понимаю что возможно легче сделать в одной программе или еще как-нибудь, но просто задача поставлена имено так, если уж на то пошло, то хотя бы первое задание, а над остальным сам попытаюсь попыхтеть. Ну а если все 3, то вообще буду примного благодарен, можешь тогда и вмз кошелечек кинуть в личку, отблагодарю ![]() |
------- Отправлено: 14:01, 27-01-2010 | #61 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать в общем сделал тебе 3 в одном, т.к. это хоть работать будет. то бишь можно проверить как оно работает.
Имена файлов указываются как аргументы командной строки, так же в каждом поле (чтоб не заморачиваться) я сделал так, чтоб ввод был примерно таким образом: все данные разделяются пробелом. то бишь фио вводится через подчеркивание вместо пробелов. вот код: main.cpp: #include <iostream> #include <cstdlib> #include <fstream> #include "rus8.h" //русификатор #include "candidate.h" using namespace std; int main(int argc, char *argv[]) { rus(); // ф-ия руссифицированного вывода if(argc < 3) { cout << "Ошибка 0 : введите все 3 аргумента командной строки" << endl; exit (0); } int size; cout << "Введите кол-во кандидатов" << endl; cin >> size; if(size < 0) { cout << "Ошибка 1 : кол-во кандидатов должно быть целочисленным и положительным ( 1, 2, 5, и т.д." << endl; exit (1); } cand *arr = new cand[size]; //выделение динамической памяти для массива структур ifstream in(argv[1]); if(!in) { cout << "Ошибка 2 : не могу открыть файл с исходными данными" << endl; exit (2); } read_info(in, arr, size); in.close(); ofstream out(argv[2]); if(!out) { cout << "Ошибка 3 : не могу открыть файл для вывода" << endl; exit (3); } write_info(out, arr, size); out.close(); delete [] arr; // очистка динамической памяти от массива структур return 0; } #include <iostream> #include <string> using namespace std; struct cand { string name; // ФИО int age; // Возраст string prof; // Профессия string set; // Наименование партии int num; // Номер избирательного округа string court; // Судимость }; void read_info(istream &, cand *, const int &); //ф-ия заполнения массива void write_info(ostream &, cand *, const int &); //ф-ия вывода данных в файл #include "candidate.h" void read_info(istream &in, cand *arr, const int &size) { for(int i = 0; i < size; i++) { in >> arr[i].name; in >> arr[i].age; in >> arr[i].prof; in >> arr[i].set; in >> arr[i].num; in >> arr[i].court; } } void write_info(ostream &out, cand *arr, const int &size) { out << "Кандидаты :" << endl << endl; for(int i = 0; i < size; i++) { out << "Кандидат номер " << (i+1) << endl; out << "И.Ф.О. : " << arr[i].name << endl; out << "Возраст : " << arr[i].age << endl; out << "Профессия : " << arr[i].prof << endl; out << "Наименование партии : " << arr[i].set << endl; out << "Номер изб. круга : " << arr[i].num << endl; out << "Судимость : " << arr[i].court << endl; out << endl << endl; } } #ifndef _RUS_H #define _RUS_H #include <locale.h> inline void rus( void ) { setlocale( LC_CTYPE, ".1251" ); setlocale( LC_MONETARY, ".1251" ); return; } #endif Иванов_Петр_Васильевич 55 Историк Единая_Росиия 5 Нет Кузичкин_Иван_Григорьевис 32 Физик-ядерщик ЛДПР 9 Нет Васильев_Михаил_Эдуардовч 38 Экономист КПРФ 7 Да Кандидаты : Кандидат номер 1 И.Ф.О. : Иванов_Петр_Васильевич Возраст : 55 Профессия : Историк Наименование партии : Единая_Росиия Номер изб. круга : 5 Судимость : Нет Кандидат номер 2 И.Ф.О. : Кузичкин_Иван_Григорьевис Возраст : 32 Профессия : Физик-ядерщик Наименование партии : ЛДПР Номер изб. круга : 9 Судимость : Нет Кандидат номер 3 И.Ф.О. : Васильев_Михаил_Эдуардовч Возраст : 38 Профессия : Экономист Наименование партии : КПРФ Номер изб. круга : 7 Судимость : Да |
Отправлено: 14:02, 27-01-2010 | #62 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Цитата Lisiy_egik:
|
|
------- Отправлено: 14:13, 27-01-2010 | #63 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать вот 1е задание (ввод имен с консоли, минус 1 - вводить только транслитом)
main.cpp #include <iostream> #include "rus8.h" //русификатор #include "candidate.h" using namespace std; int main() { rus(); // ф-ия руссифицированного вывода cand arr[size]; read_info(arr); int ch; cout << "Если вы хотите просмотерть введенную информацию, нажмите 1, если желаете закончить работы нажмите 2. "; cin >> ch; if(ch == 1) write_info(arr); if(ch == 2) return 0; return 0; } #include <iostream> #include <string> using namespace std; const int size = 2; // кол-во кандидатов struct cand { string name; // ФИО int age; // Возраст string prof; // Профессия string set; // Наименование партии int num; // Номер избирательного округа string court; // Судимость }; void read_info(cand *); //ф-ия заполнения массива void write_info(cand *); //ф-ия вывода данных в файл #include "candidate.h" void read_info(cand *arr) { cout << "Программа регистрации кандидатов" << endl << endl; for(int i = 0; i < size; i++) { cout << "Регистрация " << (i+1) << "-го кандидата"; cout << endl << "Введите имя (вместо пробелов используйте символ нижнего подчеркивания) "; cin >> arr[i].name; cout << endl << "Введите возраст :"; cin >> arr[i].age; cout << endl << "Введите профессию :"; cin >> arr[i].prof; cout << endl << "Введите название партии :"; cin >> arr[i].set; cout << endl << "Введите номер изберательного округа :"; cin >> arr[i].num; cout << endl << "Была ли судимость? "; cin >> arr[i].court; cout << endl << endl; } } void write_info(cand *arr) { cout << "Зарегестрированные кандидаты :" << endl << endl; for(int i = 0; i < size; i++) { cout << "Кандидат номер " << (i+1) << endl; cout << "И.Ф.О. : " << arr[i].name << endl; cout << "Возраст : " << arr[i].age << endl; cout << "Профессия : " << arr[i].prof << endl; cout << "Наименование партии : " << arr[i].set << endl; cout << "Номер изб. круга : " << arr[i].num << endl; cout << "Судимость : " << arr[i].court << endl; cout << endl << endl; } } |
Отправлено: 15:07, 27-01-2010 | #64 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать Второе задание (ввод так же с консоли транслитом) размещение массива структур в дп.
main.cpp #include <iostream> #include <cstdlib> #include "rus8.h" //русификатор #include "candidate.h" using namespace std; int main() { rus(); // ф-ия руссифицированного вывода int size; cout << "Введите кол-во регестрирующихся кандидатов: "; cin >> size; cout << endl; if(size < 0) { cout << "Ошибка! Кол-во кандидатов должно быть целочисленным и положительным" << endl; exit (0); } cand *arr = new cand[size]; read_info(arr, size); int ch; cout << "Если вы хотите просмотерть введенную информацию, нажмите 1, если желаете закончить работы нажмите 2. "; cin >> ch; if(ch == 1) write_info(arr, size); if(ch == 2) { delete [] arr; return 0; } delete [] arr; return 0; } #include <iostream> #include <string> using namespace std; struct cand { string name; // ФИО int age; // Возраст string prof; // Профессия string set; // Наименование партии int num; // Номер избирательного округа string court; // Судимость }; void read_info(cand *, int &); //ф-ия заполнения массива void write_info(cand *, int &); //ф-ия вывода данных в файл #include "candidate.h" void read_info(cand *arr, int &size) { cout << "Программа регистрации кандидатов" << endl << endl; for(int i = 0; i < size; i++) { cout << "Регистрация " << (i+1) << "-го кандидата"; cout << endl << "Введите имя (вместо пробелов используйте символ нижнего подчеркивания) "; cin >> arr[i].name; cout << endl << "Введите возраст :"; cin >> arr[i].age; cout << endl << "Введите профессию :"; cin >> arr[i].prof; cout << endl << "Введите название партии :"; cin >> arr[i].set; cout << endl << "Введите номер изберательного округа :"; cin >> arr[i].num; cout << endl << "Была ли судимость? "; cin >> arr[i].court; cout << endl << endl; } } void write_info(cand *arr, int &size) { cout << "Зарегестрированные кандидаты :" << endl << endl; for(int i = 0; i < size; i++) { cout << "Кандидат номер " << (i+1) << endl; cout << "И.Ф.О. : " << arr[i].name << endl; cout << "Возраст : " << arr[i].age << endl; cout << "Профессия : " << arr[i].prof << endl; cout << "Наименование партии : " << arr[i].set << endl; cout << "Номер изб. круга : " << arr[i].num << endl; cout << "Судимость : " << arr[i].court << endl; cout << endl << endl; } } |
Отправлено: 15:22, 27-01-2010 | #65 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Ну что же, попробую теперь это все осилить сам.
Ну да ладно, все равно спасибо. В чем делал-то хоть, в билдере 5ом заработает? Это получается ты сделал, второе и третее, одно с дп, одно с файлами, а надо еще как бы просто без всего этого, если не затруднит. |
------- Отправлено: 15:31, 27-01-2010 | #66 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать не, скажем так:
1-е: по-сути обычный массив структур, заполнение с консоли. вывод на экран. 2-е: размещение массива структур в динамической памяти. ввод с консоли. вывод на экран 3-е: самое полное(которое 3 в 1м): размещение массива в динамической памяти, ввод данных из файла, вывод в файл(имена файлов задаются аргументами командной строки). Если к 3-ему какие-то другие требования (например ввод с консоли вывод в файл) или размещать не в дп, то могу переделать - это пару минут займет, но если ты его покажешь преподу. то не думаю. что он скажет что тут все печально)) компилятор - Microsoft Visual Studio 2008, в билдере должно тоже скомпилиться - язык то один)) единственное что может стать проблемой - это то. что в 3ем имена файла можно задать прямо в коде, тогда не нужно будет прописывать аргументы, но с аргументами, на мой взгляд. лучше. будут вопросы - спрашивай, в личку номер вмз скину, все таки ты время сэкономил и получил рабочие проекты, а мне приятно за потраченное время ![]() |
Отправлено: 15:42, 27-01-2010 | #67 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Ну да ввод как я уточнил нужен с консоли, если не сложно, переделаешь 3ее задание.
|
------- Отправлено: 21:32, 27-01-2010 | #68 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать 3е ввод с консоли(условия ввода остались прежними), вывод в файл, имя файла указывается прямо в коде - для разнообразия уже ))))
main: #include <iostream> #include <cstdlib> #include <fstream> #include "rus8.h" //русификатор #include "candidate.h" using namespace std; int main() { rus(); // ф-ия руссифицированного вывода int size; cout << "Введите кол-во регестрирующихся кандидатов: "; cin >> size; cout << endl; if(size < 0) { cout << "Ошибка! Кол-во кандидатов должно быть целочисленным и положительным" << endl; exit (0); } cand *arr = new cand[size]; read_info(arr, size); ofstream out("out.txt"); if(!out) { cout << "Ошибка! Не могу создать файл для вывода данных" << endl; exit (3); } write_info(out, arr, size); out.close(); delete [] arr; return 0; } #include <iostream> #include <string> using namespace std; struct cand { string name; // ФИО int age; // Возраст string prof; // Профессия string set; // Наименование партии int num; // Номер избирательного округа string court; // Судимость }; void read_info(cand *, int &); //ф-ия заполнения массива void write_info(ostream &, cand *, int &); //ф-ия вывода данных в файл #include "candidate.h" void read_info(cand *arr, int &size) { cout << "Программа регистрации кандидатов" << endl << endl; for(int i = 0; i < size; i++) { cout << "Регистрация " << (i+1) << "-го кандидата"; cout << endl << "Введите имя (вместо пробелов используйте символ нижнего подчеркивания) "; cin >> arr[i].name; cout << endl << "Введите возраст :"; cin >> arr[i].age; cout << endl << "Введите профессию :"; cin >> arr[i].prof; cout << endl << "Введите название партии :"; cin >> arr[i].set; cout << endl << "Введите номер изберательного округа :"; cin >> arr[i].num; cout << endl << "Была ли судимость? "; cin >> arr[i].court; cout << endl << endl; } } void write_info(ostream &out, cand *arr, int &size) { out << "Зарегестрированные кандидаты :" << endl << endl; for(int i = 0; i < size; i++) { out << "Кандидат номер " << (i+1) << endl; out << "И.Ф.О. : " << arr[i].name << endl; out << "Возраст : " << arr[i].age << endl; out << "Профессия : " << arr[i].prof << endl; out << "Наименование партии : " << arr[i].set << endl; out << "Номер изб. круга : " << arr[i].num << endl; out << "Судимость : " << arr[i].court << endl; out << endl << endl; } } #ifndef _RUS_H #define _RUS_H #include <locale.h> inline void rus( void ) { setlocale( LC_CTYPE, ".1251" ); setlocale( LC_MONETARY, ".1251" ); return; } #endif Зарегестрированные кандидаты : Зарегестрированные кандидаты : Кандидат номер 1 И.Ф.О. : Ivan_Vasilevich_Kozlovsky Возраст : 55 Профессия : teacher Наименование партии : LDPR Номер изб. круга : 5 Судимость : No Кандидат номер 2 И.Ф.О. : Petr_Vasilevich_Tolstoy Возраст : 37 Профессия : doc Наименование партии : Edinaya_Russia Номер изб. круга : 11 Судимость : No Кандидат номер 3 И.Ф.О. : a-ta-ta Возраст : 5 Профессия : no Наименование партии : no Номер изб. круга : 1 Судимость : yap |
Отправлено: 01:20, 28-01-2010 | #69 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Помогите по жалуйста..... На курсовую задали сделать примитивный графический редактор.
Подскажите с чего начать и как вообще его реализовать. |
Отправлено: 10:47, 05-02-2010 | #70 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Помогите решить задачу | Urann | Программирование и базы данных | 11 | 14-05-2013 11:44 | |
Разное - Помогите решить задачу в Excel | Dgonny | Программирование и базы данных | 2 | 16-11-2009 04:11 | |
C/C++ - Помогите решить задачу | zdughi | Программирование и базы данных | 1 | 01-05-2009 06:03 | |
помогите решить задачу | snikers | Программирование и базы данных | 2 | 27-08-2004 01:57 | |
помогите решить задачу | Guest | Программирование и базы данных | 2 | 21-05-2004 11:23 |
|