1

Тема: Структури

Я не можу зрозуміти в чому код працює некоректно, допоможіть

1. Описати структуру з ім'ям WORKER, що містить наступні поля:
    - прізвище і ініціали працівника;
    - назва  посади;
    - рік надходження на роботу.
2. Написати програму, що виконує наступні дії:
- введення з клавіатури даних у масив, що складається з десяти структур типу WORKER;
- записи повинні бути розміщені за алфавітом;
- вивід на дисплей прізвищ працівників, чий стаж роботи в організації перевищує значення, введене з клавіатури;
    - якщо таких працівників немає, вивести на дисплей відповідне повідомлення.

#include <iostream>
#include <conio.h>
#include <string.h>
#include <windows.h> 
#include <clocale>
using namespace std;

struct worker
{
    char pib[40];
    char posada[40];
    int year;
};

int main() 
{
    setlocale(LC_ALL,"Rus");
    
    int stazh, st, flag;
    char buf[40];
    worker brig[10];
    
    for (int i=0; i<10; i++)
        {        
            cout<<"Анкета № "<<i+1<<"."<<endl;
            cout<<"Прiзвище працiвника\t";
            cin>> brig[i].pib;
            cout<<"Назва посади\t";
            cin>> brig[i].posada;
            cout<<"Рiк надходження на роботу\t";
            cin>> brig[i].year;
            cout<<endl;
        }    


    for (int j=0; j<10; j++)
    {
        for (int i=0; i<10; i++)
        {    
            if (strcmp(brig[i].pib, brig[i+1].pib)>0)
            {    
                strcpy(buf, brig[i].pib);
                strcpy(brig[i].pib, brig[i+1].pib);
                strcpy(brig[i+1].pib, buf);
            }
        }
    }
cout<<"введiть стале значення стажу: ";
cin>>st; 
        
for (int i=0; i<10; i++)
        {
            stazh=(2015-brig[i].year);
            
            if (stazh>st)
            {
                flag=1;
                cout<<brig[i].pib;
                    cout<<"\n";            
            }
        }
    if (flag==0)
        cout<<"працiвникiв якi пiдходять пiд данi критерiї немає";

    
getch();
    return 0;
}

2

Re: Структури

За межі масиву вилізли, а от де то вже думайте самі

Подякували: Yegor1

3

Re: Структури

По-перше, вказуйте, що саме вам здається некоректним. Ми не телепати, а некоректна робота програми може бути викликана, крім коду, ще й зовнішніми факторами чи неправильним уявленням про коректну роботу.
А по-друге, ви не сортуєте масив, а обмінюєте прізвища. Посади і роки лишаються на місці. Ну і так, i+1 буває за межами масиву.

4 Востаннє редагувалося Itari (19.12.2015 10:03:01)

Re: Структури

Yegor

А можна поцікавитись, чому не використовуешь С++ можливості? Маю на увазі тип string для полів структури, vector як массив, та функцию sort()?

5

Re: Структури

дам вам пораду ніколе не пийте пиво і не програмуйте