#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string.h>
using namespace std;
/*
*
*/
struct worker{
char Name[50];
char Pos[20];
int Year;
};
void Sort(worker mas[], int k);
void Inf(int temp, char mas[], int k);
int main(){
const int n = 10;
worker Tabl[n];
for(int i = 0; i < n; i++){
cout<<"Введите имя: ";
cin>>Tabl.Name;
cout<<"Введите должность: ";
cin>>Tabl.Pos;
cout<<"Введите год издания: ";
cin>>Tabl.Year;
/* cout<<"Введите имя автора: ";
cin>>Tabl.Autor;
cout<<"Введите название книги: ";
cin>>Tabl.Name;
cout<<"Введите издательство: ";
cin>>Tabl.Publish;
cout<<"Введите год издания: ";
cin>>Tabl.Year;
cout<<"Введите количество страниц: ";
cin>>Tabl.Kolstr;
*/
}
Sort(Tabl, n);
cout<<"отсортированный \n ";
for(int j = 0; j < n; j++){
cout<< Tabl[j].Name <<endl;
cout<< Tabl[j].Pos <<endl;
cout<< Tabl[j].Year <<endl;
}
int temp;
cout<<"Ввод кол-ва лет стажа \n";
cin>>temp;
Inf(temp, Tabl, n);
return 0;
}
void Sort(worker mas[], int k){
worker temp;
for(int i = k-1; i >= 0; i--)
for(int j = 0; j < i; j++){
if(strcmp(mas[j].Name, mas[j+1].Name) > 0)
{ temp = mas[j];
mas[j] = mas[j+1];
mas[j+1] = temp;
}
}
}
void Inf(int temp, worker mas[], int k){
bool prov = false;
time_t cur_t = time(NULL);
tm *today = gmtime(&cur_t);
for(int i = 0; i < k; i++)
{
int x = today-> tm_year + 1900 - mas.Year;
if(x > temp)
{prov = true;
cout<<"имя: "<<mas.Name<<endl;
cout<<"должность: "<<mas.Pos<<endl;
cout<<"стаж: "<<today-> tm_year + 1900 - mas.Year;
cout<<endl;
}
}
if(prov == false)
cout<<"нет"<<endl;
}
Структуры и функции
Код:
Ошибка:
Код:
g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp
main.cpp: In function ‘int main()’:
main.cpp:62:22: error: cannot convert ‘worker*’ to ‘char*’ for argument ‘2’ to ‘void Inf(int, char*, int)’
make[2]: *** [build/Debug/GNU-Linux-x86/main.o] Ошибка 1
main.cpp: In function ‘int main()’:
main.cpp:62:22: error: cannot convert ‘worker*’ to ‘char*’ for argument ‘2’ to ‘void Inf(int, char*, int)’
make[2]: *** [build/Debug/GNU-Linux-x86/main.o] Ошибка 1
не совпадает сигнатура в объявлении и определении Inf()
в прототипе функции:
Код:
void Inf(int temp, char mas[], int k);
и в объявлении функции:
Код:
void Inf(int temp, worker mas[], int k){
У тебя у mas[] различные типы.
Цитата: s-ilent
приведи к одинаковому типу входные параметры в функции Inf()
а Phodopus не правильно ответил, да ;)
Цитата: Енот_в_Засаде
а Phodopus не правильно ответил, да ;)
он не показал, где в коде находится функция и не исправил :)
Цитата: Alm3n
он не показал, где в коде находится функция и не исправил :)
ну надо же хотяб, домашнюю работу оставлять)))