@didol

Ошибка undefined reference to vyb(). Как исправить вызов кейса?

В коде представлен ввод данных, а далее нужно отсортировать методами сортировки: QuickSort и сортировка выбором. Но компилятор выдает ошибку undefined reference to vyb(). Как исправить код, чтобы заработал кейс 7??
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <thread>
#include <fstream>

using namespace std;

FILE *fl;
typedef struct
{
 char kod;
 unsigned char kol; /*dlya vvoda s klaviatury menu 3*/
 unsigned char mes;
} detail;

  detail det[30];
  int mesn;
  int k;
 char name[20];
 int nst=0;
 int menu();
 void nnf();
 void newf();
 void spisok();
 void opf();
 void resc();
 void resf();
 void vyb();

int main()
{
while (true){
 switch (menu()){
 case 1: nnf(); break;
 case 2: newf(); break;
 case 3: spisok(); break;
 case 4: opf(); break;
 case 5: resc(); break;
 case 6: resf(); break;
case 7 : vyb(); break;
 case 8: return 0;
 default: "Viberite punkt menu!";
}
 puts("Press any key to continue");
 getch();
 system("cls");
}
}

int menu()
{
 cout << "VIBERITE:" << endl;
 cout << "1. Vvod file name" << endl;
 cout << "2. New file" << endl;
 cout << "3. Vvesti spisok" << endl;
 cout << "4. Open file" << endl;
 cout << "5. Vivesti result" << endl;
 cout << "6. Vivesti v fail" << endl;
 cout << "7. Kluch" << endl;
  cout << "8. Exit" << endl;
 int i;
 cin >> i;
 cout << endl;
 return i;
}


void nnf()
{
 cout << "Vvedite file name" << endl;
 cin >> name;
}

void newf()
{
 if ((fl = fopen(name,"wb"))==NULL){
 cout << "Oshibka pri sozdanii"<<endl;
 exit(1);
 }
 cout << "OK" << endl;
 fclose(fl);
}

void spisok()
{
 cout << "Vvedite chislo detalei " << endl;
 cin >> nst;

 for (int i=0; i<nst; i++) {
 cout << "Vvedite kod: ";
 cin >> det[i].kod;
 cout << "Vvedite kolichestvo: ";
 cin >> det[i].kol;
 cout << "Vvedite mesyac: ";
 cin >> det[i].mes;
 fwrite( &det[i], sizeof(detail), 1, fl );
 cout << endl;
 }
    cout << "mesn: "; cin >> mesn;
{
    k=mesn-1;
    for(int i=0;i<k;i++)
    cout << det[i].mes <<"mesyac "<< det[i].kod <<"kod "<< det[i].kol <<"kol "<< endl;}
 fclose(fl);
}

void opf()
{
 if ((fl = fopen(name,"rb"))==NULL) {
  cout << "Oshibka pri otkritii"<<endl;
  exit(1);
 }
 nst=0; detail std;
 while(true) {
 int nwrt = fread( &std, sizeof(detail), 1, fl );
 if (nwrt!=1) break;
 det[nst]=std;
 cout << det[nst].kod << " " << det[nst].kol<< " " << det[nst].mes<< endl;
 nst++;
 }
 fclose(fl);
}
void resc()
{
     for (int i=0; i<mesn; i++)
 if (det[i].mes==mesn) {cout << det[i].mes << det[i].kod << det[i].kol << endl;

}
}
void vyb(detail det[] , int n)
{
int imin,i,j;
detail t;
for(i=0; i<n-1; i++) {
imin=i;
for(j=i+1; j<n; j++)
if (det[imin].mes>det[j].mes) imin=j;
if (imin != i) {
t = det[imin];
det[imin] = det[i];
det[i] = t; }
}

for (int i=0; i<nst; i++) {
            cout << det[i].mes <<"mesyac "<< det[i].kod <<"kod "<< det[i].kol <<"kol "<< endl;
if (det[i].kod==1)
cout << "kod detali "  << det[i].kol <<endl;
if (det[i].kod==2)
cout << "kod detali" << det[i].kol <<endl;
}
}
void resf()
{
 char namet[30];
 FILE *ft;
 cout << "Vvedite imya faila" << endl;
 cin >> namet;
 if ((ft = fopen(namet,"w"))==NULL){
  cout << "Oshibka pri sozdanii "<<endl;
  exit(1);
 }
 fclose(ft);
}
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
@galaxy
void vyb();
...
void vyb(detail det[] , int n)

ничего не смущает?

А все из-за дурацкой манеры писать на суржике из C и C++.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы