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

структуры подскажите где ошибки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ компилятор пропускает строчки с инициализацией http://www.cyberforum.ru/cpp-beginners/thread33255.html
здравствуйте! Копмилятор пропускает строчки с инициализацией переменных. При попытке поставить маркер, переносит этот маркер на строчку ниже. Переменные при этом инициализируются какими-то левыми значениями. В чем может быть проблема?
C++ Телефонная книга. нужна помощь в настроике настроить поиск. #include <string.h> #include <stdio.h> #include <windows.h> void funkcia1() { int i,j=1; for(i=0;i<90;i++) printf("%c",j); http://www.cyberforum.ru/cpp-beginners/thread33234.html
C++ работа с указателями
небольшая проблемка, никак не могу разобраться с указателями. Я так понял что создавая массив лучше если сразу сдалешь на него указатель и будешь работать с ним, нежели с самим массивом, тип так экономичнее для ресурсов компа, я ведь правильно понял? #include <cstdlib> #include <iostream> #include <stdio.h> short int const n = 3; using namespace std;
C++ поиск маршрута. Задача на С#.
Задача следующая: Некая географическая карта местности задана квадратной сеткой определенного масштаба. В узлах сетки известна высота над уровнем моря. Между соседними узлами высота меняется плавно. Имеется караван, перемещающийся только по линиям сетки, перемещение по диагоналям запрещается. Путь между двумя соседними точками с углом наклона больше 45 градусов считается непроходимым....
C++ Програма с .тхт файлом http://www.cyberforum.ru/cpp-beginners/thread33219.html
вот код #include <windows.h> #include <stdio.h> #include <conio.h> FILE *f; typedef struct tagINFO {
C++ Обработка русского текста в консольном режиме. Приветствую всех, Собственно вопрос: Создаю строковую переменную, посредством cin заношу в неё текст на русском, распечатываю cout'ом и получаю хлам. Типа ввоже йцукен, получаю ©жгЄҐ* В принципе, я могу перед выводом на экран у каждого символа "сдвинуть" кодировку, но может есть более простой способ? Заранее благодарен. подробнее

Показать сообщение отдельно
83snake
0 / 0 / 0
Регистрация: 06.04.2009
Сообщений: 30
08.05.2009, 15:34  [ТС]
выправил на такой вид и все равно ошибки


struct name
{
char fam[30]; //фамилия
char imja[30]; //имя
char otches[30];//отчество

};

struct depor
{
char deportam[30]; //депортамент
char dolz[30]; //должность
int nomber;//номер талона

};


struct person
{
name work; // Имя, фамилия, отчество.
depor post; // должность
int time; // количество отработаных часов
int day ; // количество не рабочих дней
int salary; // Зарплата.

};



//************функции***************

void Print (const person * pEn , int size)
{
for(int i = 0; i < size; i++, pEn++)
{

cout<<"---------------------------------------------------------------------------------"<<endl;
cout<< setw(10)<<"Фамилия: "<<pEn->work.fam<<endl
<< setw(10)<<"Имя: "<<pEn->work.imja<<endl
<< setw(10)<<"Отчество: "<<pEn->work.otches<<endl
<< setw(10)<<"Депортамент: "<<pEn->post.deportam<<endl
<< setw(10)<<"Должность: "<<pEn->post.dolz<<endl
<< setw(10)<<"номер талона: "<<pEn->post.nomber<<endl
<< setw(10)<<"Рабочее время: "<<pEn->time<<endl
<< setw(10)<<"Выходные дни: "<<pEn->day<<endl
<< setw(10)<<"Зарплата: "<<pEn->salary<<endl
<<endl;
}
}

void Fill(person *pEn , int size)
{
for (int i = 0; i < size; i++, pEn++)
{
cout<<"Введите Фамилию: ";
cin>>pEn->work.fam;
cout<<"Введите имя: ";
cin>>pEn->work.imja;
cout<<"Введите отчество: ";
cin>>pEn->work.otches;
cout<<"Введите депортамент: ";
cin>>pEn->post.deportam;
cout<<"Введите должность: ";
cin>>pEn->post.dolz;
cout<<"Введите номер талона: ";
cin>>pEn->post.nomber;
cout<<"Введите количество отработаных часов: ";
cin>>pEn->time;
cout<<"Введите количество неробочих дней за месяц: ";
cin>>pEn->day;
cout<<"Введите зарплату: ";
cin>>pEn->salary;
cin.ignore();
}
}

void Add (person *&e,int &size , const person *pEn)
{
const person *old = e;
e = new person[size + 1];

for (int i = 0; i < size; i++)
{
strcpy(e[i].work.fam , old[i].work.fam);
strcpy(e[i].work.imja , old[i].work.imja);
strcpy(e[i].work.otches , old[i].work.otches);

strcpy(e[i].post.deportam , old[i].post.deportam);
strcpy(e[i].post.dolz , old[i].post.dolz);
e[i].post.nomber = old[i].post.nomber;

e[i].time = old[i].time;
e[i].day = old[i].day;
e[i].salary = old[i].salary;
}

strcpy(e[size].work.fam,pEn->work.fam);
strcpy(e[size].work.imja,pEn->work.imja);
strcpy(e[size].work.otches,pEn->work.otches);

strcpy(e[size].post.deportam , pEn->post.deportam);
strcpy(e[size].post.dolz , pEn->post.dolz);
e[size].post.nomber = pEn->post.nomber;

e[size].time = pEn->time;
e[size].day = pEn->day;
e[size].salary = pEn->salary;

++size;
delete [] old;
}

//удалить по номеру
void Delete(person *p, int index, int size)
{
person *old = p;
person *cp = new person;

p = new person[size - 1];
for(int i = 0, j = 0; i < size; ++i)
{
if(i != index)
{
strcpy(p.work.fam , cp.work.fam);
strcpy(p.work.imja , cp.work.imja);
strcpy(p.work.otches , cp.work.otches);

strcpy(p.post.deportam , cp.post.deportam);
strcpy(p.post.dolz , cp.post.dolz);
p.post.nomber = cp.post.nomber;

p.time = cp.time;
p.day = cp.day;
p.salary = cp.salary;

++j;
}
}
--size;
// delete[] old;
}

//поиск !?
int FindPFam(person *p, int size, char * test)
{
for(int i = 0; i < size; i ++)
{
if(strcmp(p[i].work.fam, name) == 0)
{
return i;
}
}
return -1;
}

//void copy_p(person &p, const person &cp)
//{
// strcpy(p.work.fam , cp.work.fam);
// strcpy(p.work.imja , cp.work.imja);
// strcpy(p.work.otches , cp.work.otches);
//
// strcpy(p.post.deportam , cp.post.deportam);
// strcpy(p.post.dolz , cp.post.dolz);
// p.post.nomber = cp.post.nomber);
//
// p.time = cp.time;
// p.day = cp.day;
// p.salary = cp.salary;
//}

int main ()
{
setlocale(0,"RUS");
int size = 3;

person *pEn = new person[size];

char test;
int index;

person *nEn = new person;

cout<<"Ведите что вы хотите сделать: \n"
<<"Заполнение базы данных -нажмите 1\n\n"
<<"Пересмотр данных обо всех сотрудниках нажмите 2\n\n"
<<"Дополнения базы данных новым сотрудником нажмите 3\n\n"
<<"Удаления из базы данных сотрудника нажмите 4\n\n"
<<"Упорядочивание: сотрудники по подразделам и в алфавитном порядке внутри подраздела нажмите 5\n\n"
<<"Поиск: все сводки о сотруднике по ПИБ и табельному номеру нажмите 6\n\n"
<<"Выборка: табель учета рабочего времени отдела NN за месяц ХХ; \n сводка о работе сотрудника ХХ за год. нажмите 7\n\n"
<<"Вычисление: среднее количество неробочих дней по отделам; \n суммарное количество неробочих дней по месяцам; за текущий год нажмите 8\n\n"
<<"Коррекция: изменение должности сотрудника ХХ из АА на ББ нажмите 9\n\n"
<<"Табличный отчет: табель учета рабочего времени (груповання по отделам), \n итог - общий фонд рабочего времени рабочего неробочих дней по отделам и по фирме нажмите 10\n\n"
<<"Произвольный отчет: листок учета рабочего времени для каждого работника за месяц нажмите 11\n\n"

int n;
cin >> n;

switch (n){
case 1:
cout<<" Вы выбрали заполнение базы данных \n";

Fill ( pEn ,size );


break;
case 2:
cout<<"Вы выбрали пересмотр данных обо всех сотрудниках\n";

Print ( pEn ,size );
cout<<endl;

break;
case 3:
cout<<"Вы выбрали дополнения базы данных новым сотрудником\n";


Fill(nEn,1);

Add(pEn,size,nEn);
Print(pEn ,size);
cout<<endl;

break;
case 4:
cout<<"Вы выбрали удаления из базы данных сотрудника\n";


cout<<"Введите фамилию которую надо удалить :"<<endl;
cin<<test;

index = FindPFam(pEn,size,test);

Delete(pEn,index,size);
person out;

Print(&out,1);

break;
case 5:
cout<<"Вы выбрали упорядочивание: сотрудники по подразделам и в алфавитном порядке внутри подраздела\n";

break;
case 6:
cout <<"Вы выбрали Поиск: все сводки о сотруднике по ПИБ и табельному номеру\n";

break;
case 7:
cout <<"Вы выбрали Выборка: табель учета рабочего времени отдела NN за месяц ХХ; \n сводка о работе сотрудника ХХ за год.\n";

break;
case 8:
cout <<"Вы выбрали Вычисление: среднее количество неробочих дней по отделам; \n суммарное количество неробочих дней по месяцам; за текущий год\n";

break;
case 9:
cout <<"Вы выбрали Коррекция: изменение должности сотрудника ХХ из АА на ББ\n";

break;
case 10:
cout <<"Вы выбрали Табличный отчет: табель учета рабочего времени (груповання по отделам), \n итог - общий фонд рабочего времени рабочего неробочих дней по отделам и по фирме\n";

break;
case 11:
cout <<"Вы выбрали Произвольный отчет: листок учета рабочего времени для каждого работника за месяц\n";

break;



}



cout<<endl;






delete[] pEn;
system("pause");
return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru