|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.12.2011, 18:33 | #1 |
Пользователь
Регистрация: 30.10.2011
Сообщений: 22
|
Структуры
#include "stdafx.h"
#include "conio.h" #include <iostream> #include "windows.h" #include <time.h> using namespace std; struct RABOCHIY { char fio[50]; char male[10]; int year; float salary; }; RABOCHIY st[10]; int numrec=0; int YEAR = 0; int ShowMenu(); void AddRecord(); void PrintRabochiy(int numrec); int GetIndex(); int _tmain(int argc, _TCHAR* argv[]) { int nMenu; int i, index; FILE *fp; time_t rawtime; time(&rawtime); tm *ti = localtime(&rawtime); SetConsoleCP(1251); SetConsoleOutputCP(1251); printf("Сегодня %02d", ti->tm_year + 1900); YEAR = ti->tm_year + 1900; getchar(); do { nMenu=ShowMenu(); switch(nMenu) { case 1: { AddRecord(); numrec++; break; } case 2: { index=GetIndex(); if(index==-1) break; for(i=index;i<numrec-1;i++) st[i]=st[i+1]; numrec--; cout << "\nЗапись " << index+1 << " удалена." << endl; break; } case 3: { if(numrec==0) { cout << "\nБаза данных пуста..." << endl; break; } for(i=0;i<numrec;i++) { PrintRabochiy(i); } cout << "\nКонец списка." << endl; break; } case 4: { fp=fopen("db.txt","w"); if(fp==NULL) { cout << "\nОшибка открытия файла..." << endl; break; } fprintf(fp,"%d\n",numrec); for(i=0;i<numrec;i++) { fprintf(fp,"%s\n",st[i].fio); fprintf(fp,"%s\n",st[i].male); fprintf(fp,"%d\n",st[i].year); fprintf(fp,"%f\n",st[i].salary); } cout << "\nФайл сохранен." << endl; fclose(fp); break; } case 5: { fp=fopen("db.txt","r"); if(fp==NULL) { cout << "\nОшибка открытия файла..." << endl; break; } fscanf(fp,"%d\n",&numrec); for(i=0;i<numrec;i++) { fgets(st[i].fio,50,fp); fgets(st[i].male,10,fp); fscanf(fp,"%d\n",&st[i].year); fscanf(fp,"%f\n",&st[i].salary); st[i].fio[strlen(st[i].fio) - 1]='\0'; st[i].male[strlen(st[i].male) - 1]='\0'; } cout << "\nФайл прочитан." << endl; fclose(fp); break; } default: cout << "\nНеправильный пункт меню..." << endl; } }while(nMenu!=0); return 0; } int ShowMenu() { int choice; cout << "\n================================ ===========================" << endl; cout << "1 - Добавить запись" << endl; cout << "2 - Удалить запись" << endl; cout << "3 - Показать весь список" << endl; cout << "4 - Сохранить данные в текстовый файл" << endl; cout << "5 - Загрузить данные из текстового файла" << endl; cout << "0 - Выход" << endl; cout << "Количество записей в базе: " << numrec << endl; cout << "Ваш выбор: "; cin >> choice; return choice; } void AddRecord() { flushall(); cout << "ФИО: "; gets(st[numrec].fio); cout << "Пол: "; gets(st[numrec].male); cout << "Год рождения: "; cin >> st[numrec].year; cout << "Месячная зарплата: "; cin >> st[numrec].salary; } void PrintRabochiy(int i) { cout << "\n----- " << i+1 << " -----------------------------------"<< endl; cout << "ФИО: " << st[i].fio << endl; cout << "Пол: " << st[i].male << endl; cout << "Год рождения: " << st[i].year << endl; cout << "Месячная зарплата: " << st[i].salary << endl; for (int i = 0; i < numrec; i++) { int rest = 0; int YEAR1 = st[i].year; if (st[i].male == 'м') { rest = YEAR - YEAR1; scanf("%d", &rest); } printf("Возраст: %d", rest); } getch(); } int GetIndex() { int index; if(numrec==0) { cout << "\nБаза данных пуста..." << endl; return -1; } cout << "\nВведите номер записи (1.." << numrec << "): "; cin >> index; if(index<1 || index>numrec) { cout << "\nНет записи с таким номером..." << endl; return -1; } return index-1; } |
18.12.2011, 18:33 | #2 |
Пользователь
Регистрация: 30.10.2011
Сообщений: 22
|
В функции "void PrintRabochiy(int i)" необходимо посчитать возраст лиц мужского пола.
Ошибка: нельзя сравнивать строку с символом. Помогите пожалуйста исправить |
18.12.2011, 18:45 | #3 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
18.12.2011, 18:48 | #4 |
Пользователь
Регистрация: 30.10.2011
Сообщений: 22
|
Нет не текст, а лишь символ указывающий пол.
|
18.12.2011, 18:50 | #5 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
18.12.2011, 18:57 | #6 |
Пользователь
Регистрация: 30.10.2011
Сообщений: 22
|
Да в том то и проблема! Я начинающий. Делал по исходнику
пытался сравнить char male = 'м'; короче у МЕНЯ ничего не получилось. Помогите чем сможете! |
18.12.2011, 19:13 | #7 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Сравнивать их - все равно, что сравнивать мягкое с тёплым. Почему вы сравниваете вещи, которые сравнивать по меньше мере не логично? struct RABOCHIY { char fio[50]; char male[10]; //либо здесь должно быть char male; int year; float salary; }; Либо сравнение должно быть с "м", а не с 'м' |
|
18.12.2011, 19:19 | #8 |
Пользователь
Регистрация: 30.10.2011
Сообщений: 22
|
Если не сложно напишите код
|
18.12.2011, 19:33 | #9 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
18.12.2011, 19:36 | #10 |
Пользователь
Регистрация: 30.10.2011
Сообщений: 22
|
Спасибо БОЛЬШОЕ!!!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
структуры | Alexander1205 | Общие вопросы C/C++ | 12 | 15.04.2011 21:15 |
Структуры в с++ | kosteck | Помощь студентам | 2 | 19.12.2010 19:22 |
Структуры | Wertex | Помощь студентам | 3 | 30.10.2009 13:52 |
Структуры | Shadovv13 | Общие вопросы C/C++ | 18 | 15.10.2009 23:03 |
Структуры в Си | osichev | Помощь студентам | 2 | 12.09.2009 15:51 |