![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
nas09 |
![]()
Сообщение
#1
|
Школьник ![]() Группа: Продвинутые Сообщений: 12 Регистрация: 21.4.2009 Город: Москва Учебное заведение: ЮУрГУ Вы: студент ![]() |
По каждому сотруднику вводится следующая информация:
• Фамилия, имя, отчество; • год и дата рождения; • пол; • стаж работы по специальности; • домашний адрес; • телефон; • должность; • оклад. Информация о сотрудниках фирмы хранится в файле workers.dat. помогите исправить, пожалуйста вот эту ошибку.... http://i010.radikal.ru/0905/d0/69978df9d0e1.jpg #include "stdafx.h" #include "iostream" #include<conio.h> #include<stdio.h> using namespace std; struct WK { char fio[30]; int year; char pol[20]; int stag; char adres; int phone; char dolg; int oklad; }; WK mas[10];//массив типа WK //Пpоцедуpа ввода в базу WK init (WK wk) { cout<<"Vvedite familiyu, imya, otchestvo:"<<endl; cin.getline(wk.fio,30);//считать стpоку длиной 30 символов cout<<"Vvedite god i datu rozhdeniya:"<<endl; cin>>wk.year; cout<<"Vvedite pol:"<<endl; cin>>wk.pol; cout<<"Vvedite stag raboty po specialnosti:"<<endl; cin>>wk.stag; cout<<"Vvedite domashniy adres:"<<endl; cin>>wk.adres; cout<<"Vvedite telefon:"<<endl; cin>>wk.phone; cout<<"Vvedite dolgnost:"<<endl; cin>>wk.dolg; cout<<"Vvedite oklad:"<<endl; cin>>wk.oklad; return wk;//функция возвpащает заполненную стpуктуpу } //Пpоцедуpа ввода информации в базу void writeBase(FILE *f, WK wk) { fprintf(f, "%s ", wk.fio); fprintf(f, "%s ", wk.year); fprintf(f, "%s ", wk.pol); fprintf(f, "%d ", wk.stag); fprintf(f, "%s ", wk.adres); fprintf(f, "%d ", wk.phone); fprintf(f, "%s ", wk.dolg); fprintf(f, "%f ", wk.oklad); } //Вывод массива из файла void foutmas(FILE *f, WK wk) { //Считываем значение из файла fscanf(f, "%s", wk.fio); //Выводим его на экpан cout<<"Familia, imya, otchestvo: "<<wk.fio<< endl; fscanf(f, "%d", wk.year); cout<<"God i data rozhdeniya: "<<wk.year<< endl; fscanf(f, "%s", wk.pol); cout<<"Pol: "<<wk.pol<< endl; fscanf(f, "%d", wk.stag); cout<<"Stag: "<<wk.stag<< endl; fscanf(f, "%s", wk.adres); cout<<"Dom. adres: "<<wk.adres<< endl; fscanf(f, "%d", wk.phone); cout<<"Stag: "<<wk.phone<< endl; fscanf(f, "%s", wk.dolg); cout<<"Dolgnost: "<<wk.dolg<< endl; fscanf(f, "%f", wk.oklad); cout<<"Oklad: "<<wk.oklad<< endl; } int _tmain(int argc, _TCHAR* argv[]) { WK wk;//Экземпляp стpуктуpы workers int i=0; FILE *f=fopen("workers.dat", "w+"); //Создаем файл do { mas[i]=init(wk); //Заполняем элемент массив writeBase(f, mas[i]); //Записываем элемент в файл i++; fseek(f, 1, SEEK_CUR); //Пеpеходим на в файле на один символ } while(i<10); i=0; //Обнуляем пеpеменную цикла printf("Nazhmite klavishu dlya vyvoda bazy na ekran...\n"); getch(); do { foutmas(f, mas[i]); //Считываем массив из файла и выводим на экpан i++; } while(i<10); fclose(f); //Закpываем файл return 0; //Пpизнак удачного завеpшения пpогpаммы } |
![]() ![]() |
Алекса |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 1 Регистрация: 21.5.2009 Город: Cyt;bycr Учебное заведение: Снежинский политехнический колледж Вы: студент ![]() |
помогите пожалуйста. Внеплановый зачет по дисциплине.
Дана последовательность чисел среди которых один нуль. Вывести на печать все числа до нуля #include<iostream.h> #include<conio.h> void main() { int i, A[6]={5,6,9,0,4,8} clrscr(); for (i=0; i<6; i++) .............. надо дорешать |
граф Монте-Кристо |
![]()
Сообщение
#3
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
А не проще while'ом сделать?
while(A[i] != 0) { ... } |
nas09 |
![]()
Сообщение
#4
|
Школьник ![]() Группа: Продвинутые Сообщений: 12 Регистрация: 21.4.2009 Город: Москва Учебное заведение: ЮУрГУ Вы: студент ![]() |
теперь когда ввожу пследний элемент структуры выскакивает ошибка...
(IMG:http://s56.radikal.ru/i152/0905/2c/9986b1d66b11.jpg) #include "stdafx.h" #include "iostream" #include<conio.h> #include<stdio.h> using namespace std; struct WK { char fio[30]; int year; char pol[30]; int stag; char adres[50]; int phone; char dolg[30]; char oklad[30]; }; WK mas[10]; WK init (WK wk) { cout<<"Vvedite familiyu, imya, otchestvo:"<<endl; cin.getline(wk.fio,30); cout<<"Vvedite god i datu rozhdeniya:"<<endl; cin>>wk.year; cout<<"Vvedite pol:"<<endl; cin>>wk.pol; cout<<"Vvedite stag raboty po specialnosti:"<<endl; cin>>wk.stag; cout<<"Vvedite domashniy adres:"<<endl; cin>>wk.adres; cout<<"Vvedite telefon:"<<endl; cin>>wk.phone; cout<<"Vvedite dolgnost:"<<endl; cin>>wk.dolg; cout<<"Vvedite oklad:"<<endl; cin>>wk.oklad; return wk; } //Пpоцедуpа ввода информации в базу void writeBase(FILE *f, WK wk) { fprintf(f, "%s ", wk.fio); fprintf(f, "%s ", wk.year); fprintf(f, "%s ", wk.pol); fprintf(f, "%d ", wk.stag); fprintf(f, "%s ", wk.adres); fprintf(f, "%d ", wk.phone); fprintf(f, "%s ", wk.dolg); fprintf(f, "%s ", wk.oklad); } //Вывод массива из файла void foutmas(FILE *f, WK wk) { //Считываем значение из файла fscanf(f, "%s", wk.fio); //Выводим его на экpан cout<<"Familia, imya, otchestvo: "<<wk.fio<< endl; fscanf(f, "%d", wk.year); cout<<"God i data rozhdeniya: "<<wk.year<< endl; fscanf(f, "%s", wk.pol); cout<<"Pol: "<<wk.pol<< endl; fscanf(f, "%d", wk.stag); cout<<"Stag: "<<wk.stag<< endl; fscanf(f, "%s", wk.adres); cout<<"Dom. adres: "<<wk.adres<< endl; fscanf(f, "%d", wk.phone); cout<<"Stag: "<<wk.phone<< endl; fscanf(f, "%s", wk.dolg); cout<<"Dolgnost: "<<wk.dolg<< endl; fscanf(f, "%s", wk.oklad); cout<<"Oklad: "<<wk.oklad<< endl; } int _tmain(int argc, _TCHAR* argv[]) { WK k;//Экземпляp стpуктуpы workers int i=0; FILE *f=fopen("workers.dat", "w+"); //Создаем файл do { mas[i]=init(k); //Заполняем элемент массив writeBase(f, mas[i]); //Записываем элемент в файл i++; fseek(f, 1, SEEK_CUR); //Пеpеходим на в файле на один символ } while(i<10); i=0; //Обнуляем пеpеменную цикла printf("Nazhmite klavishu dlya vyvoda bazy na ekran...\n"); getch(); do { foutmas(f, mas[i]); //Считываем массив из файла и выводим на экpан i++; } while(i<10); fclose(f); //Закpываем файл return 0; //Пpизнак удачного завеpшения пpогpаммы } |
Vahappaday |
![]()
Сообщение
#5
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
мда... буду потихоньку добавлять косяки (не принимать близко к сердцу если что, тоже могу ощибаться)
Ну, например, переменная k вообще нам не нужна, а у меня на неё VS ругается - использование неиниц. переменной, говорит. Предлагаю в функцию init вообзе ничего не передавать, просто объявить WK wk; внутри ф-ии. Там где заполняем массив... Зачем предлагать ввести ещё и дату, если можно ввести только год. Но это бы ладно. Просто когда мы читаем строку, то ограничиваемся пробелом. Раз уж пошла практика использовать для чтения MS run-time функции (лично я им симпатизирую (IMG:style_emoticons/default/wink.gif) ), то удобней было бы использовать для чтения всех этих текстовых параметров ф-ии fgets - читает до перевода строки, а не до пробела. Да и ограничения на размер текстовых полей. Мои не самые длинные fio еле вместились в 30 символов, а если взять, ну хотя бы фио "Выхухолев Иннокентий Иннокентиевич"? Кстати, если использовать fgets можно вместо фиксированных по длине текстовых полей оставить указатели char *. Выкладывай исправленный, будем ковырять дальше. |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 23:00 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru