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

структуры - C++

Восстановить пароль Регистрация
 
JaEvg
 Аватар для JaEvg
1 / 1 / 0
Регистрация: 23.09.2010
Сообщений: 31
14.12.2010, 10:48     структуры #1
Не получается отладить программу в строке перемножения значений структуры. строчка man[i].zp == man[i].timech * man[i].tarif;
Помогите найти ошибку.

Код
#include <stdio.h>
 #include <string.h>
 #include <windows.h>
 #include <conio.h>
 #include <iostream>
 using namespace std;
 
 char bufRus[256];
  char* Rus(char* mes)
  { AnsiToOem(mes, bufRus);
    return bufRus;
   }
 
const int l_name = 30;
 
 struct Man
  { char name[l_name];
        int rtab;
        int tarif;
        int timech;
		int zp;
  };
 
int compare(const void *manl, const void *man2);
 
// Создание файла
 
void create()
{ Man man; int pr; FILE *fbin;
  if ((fbin =fopen("dbase.bin","wb")) == NULL)
   { puts(Rus("Ошибка создания  файла\n "));
   getch();
   }
  else
        { do
           { cout << Rus("\n Фамилия и инициалы: ");
                 cin.get() ; gets (man.name) ;
                 cout << Rus("\n Табельный номер: ");
                 cin >> man.rtab;
                 cout << Rus("\n Количество отработанных часов за месяц: ");
                 cin >> man.timech;
                 cout << Rus("\n Почасовой тариф: ");
                 cin >> man.tarif;
                 fwrite(&man, sizeof(man),1,fbin);
                 cout<<Rus("\n Продолжить ввод? (1-да/0-нет)");
                 cin >> pr;
                 } while(pr == 1);
   }  
  fclose(fbin);
}
 
// Просмотр файла
 
void view()
  { FILE *fbin;
        if ((fbin =fopen("dbase.bin","rb")) == NULL)
         { puts(Rus("Ошибка открытия  файла\n"));
           getch();
         }
        else
         { fseek(fbin, 0, SEEK_END);
           int n_record = ftell(fbin)/sizeof(Man);
           Man *man = new Man[n_record];
           fseek(fbin, 0, SEEK_SET);
           fread(man, sizeof(Man),n_record, fbin);
           fclose(fbin);
           qsort(man, n_record, sizeof(Man), compare);
           for (int i=0; i < n_record; i++)
                cout << "\n" << man[i].name << "  " <<
                 man[i].rtab << "  " << man[i].timech << "  " << man[i].tarif;
                cout << "\n";
                getch();
         }
  }
 
// Обработка файла
 
 void work()
  { char z_name[l_name];
        FILE *fbin;
        if ((fbin =fopen("dbase.bin","rb")) == NULL)
         { puts(Rus("Ошибка открытия  файла\n"));
           getch();
         }
        else
         { fseek(fbin, 0, SEEK_END);
           int n_record = ftell(fbin)/sizeof(Man);
           Man *man = new Man[n_record];
           fseek(fbin, 0, SEEK_SET);
           fread(man, sizeof(Man),n_record, fbin);
           fclose(fbin);
           qsort(man, n_record, sizeof(Man), compare);
           cout<<Rus("\nВведите фамилию и инициалы сотрудника:");
           cin.get();gets(z_name);
           for (int i=0; i < n_record; i++)
           { if (!strcmp(man[i].name,z_name))
                cout <<  "\n" << man[i].name << "  " <<
                   man[i].rtab << "  " << man[i].timech << "  " << man[i].tarif;
           cout << "\n";
           man[i].zp == man[i].timech * man[i].tarif;
           cout << "  " << man[i].zp;
           getch();
         }
		 }
  }
int main()
 { int num;
   do
        { cout << Rus("\n 1 - Создание файла");
          cout << Rus("\n 2 - Просмотр файла");
          cout << Rus("\n 3 - Обработка файла");
          cout << Rus("\n 4 - Выход");
          cout << Rus("\n Ваш выбор: ");
          cin >> num;
          switch(num)
           { case 1: create();break;
                 case 2: view();break;
                 case 3: work();break;
           }
        } while (num != 4);
   return 0;
}
 
int compare(const void *manl, const void *man2)
{ 
   return strcmp(((Man *)manl)->name,
((Man *)man2)->name);
 }
на всякий случай задание:

Не по теме:

Информация о сотрудниках фирмы содержит: Ф. И. О. сотрудника, та-бельный номер, количество отработанных часов за месяц, почасовой тариф.Для описания информации о сотрудниках фирмы в программе необходимо использовать тип данных структура. Для хранения информации о сотрудниках фирмы создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе просмотр бинарного файла и выполнить его обработку: вывести размер заработной платы каждого сотрудника фирмы за вычетом подоходного налога, который составляет 13% от суммы заработка. Информацию отсортируйте.

процентный множитель пока не добавлял.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2010, 10:48     структуры
Посмотрите здесь:

C++ Структуры
C++ СТРУКТУРЫ
Структуры C++
C++ Структуры
структуры))) C++
Структуры C++
C++ Структуры
C++ Структуры

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
14.12.2010, 11:08     структуры #2
Цитата Сообщение от JaEvg Посмотреть сообщение
man[i].zp == man[i].timech * man[i].tarif;
== это оператор сравнения
JaEvg
 Аватар для JaEvg
1 / 1 / 0
Регистрация: 23.09.2010
Сообщений: 31
14.12.2010, 11:29  [ТС]     структуры #3
Цитата Сообщение от kazak Посмотреть сообщение
== это оператор сравнения
О, спасибо. Вот в чём загвоздка-то была
Yandex
Объявления
14.12.2010, 11:29     структуры
Ответ Создать тему
Опции темы

Текущее время: 06:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru