Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Структуры и функции

13K
24 мая 2011 года
X-enot
39 / / 01.09.2010
Помогите решить ошибку, заранее благодарен

Код:
#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
14
24 мая 2011 года
Phodopus
3.3K / / 19.06.2008
не совпадает сигнатура в объявлении и определении Inf()
18K
25 мая 2011 года
s-ilent
58 / / 30.09.2008
приведи к одинаковому типу входные параметры в функции Inf()
в прототипе функции:
 
Код:
void Inf(int temp, char mas[], int k);

и в объявлении функции:
 
Код:
void Inf(int temp, worker mas[], int k){

У тебя у mas[] различные типы.
29K
25 мая 2011 года
Енот_в_Засаде
224 / / 09.11.2010
Цитата: s-ilent
приведи к одинаковому типу входные параметры в функции Inf()


а Phodopus не правильно ответил, да ;)

316
25 мая 2011 года
Alm3n
889 / / 29.05.2009
а Phodopus не правильно ответил, да ;)


он не показал, где в коде находится функция и не исправил :)

29K
25 мая 2011 года
Енот_в_Засаде
224 / / 09.11.2010
Цитата: Alm3n
он не показал, где в коде находится функция и не исправил :)


ну надо же хотяб, домашнюю работу оставлять)))

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог