Столкнулся с проблемой при решении задачи на XCode.
При использовании qsort программа выдает ошибку:
No matching function for call to 'qsort'
P.S. накидал заголовочных файлов, но ни с чем не проходит.
Код:
#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
#include <climits>
#include <search.h>
using namespace std;
int cmp(int *a, const char *b) {
return *(float*)a- *(float*)b;
}
int main(int argс , const char * argv[]) {
ifstream fin;
fin.open("books.dat");
if (!fin.is_open()) {
cout << "Файл не может быть открыт!\n";
system("pause");
}
else {
float L;
int N , sum=0;
int i,j;
fin >> L;
fin >> N;
float* mass_books=new float [N];
for (i=0;i<N;i++)
fin>> mass_books[i];
fin.close();
qsort( mass_books, sizeof(float), N, cmp ) ;
for (j = 0; j < N; j++)
sum = sum + mass_books[j];
for (i = N - 1; sum > L; i--)
sum = sum - mass_books[i];
cout << "Максимальное количество книг на полке: " <<i + 1 << endl;
system("pause");
}
return 0;
}
Написал вместо кьюсорта пузырьковую сортировку, но ответ на вопрос все равно интересно услышать .
#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
#include <climits>
#include <search.h>
using namespace std;
int cmp(int *a, const char *b) {
return *(float*)a- *(float*)b;
}
int main(int argс , const char * argv[]) {
ifstream fin;
fin.open("books.dat");
if (!fin.is_open()) {
cout << "Файл не может быть открыт!\n";
system("pause");
}
else {
float L;
int N , sum=0;
int i,j;
float prom;
fin >> L;
fin >> N;
float* mass_books=new float [N];
for (i=0;i<N;i++)
fin>> mass_books[i];
fin.close();
//qsort( mass_books, sizeof(float), N, cmp ) ; у меня не проходит эта функция
//напишем пузырьковую сортировку
for(i=0;i<N;i++)
{
for(j=0;j<N-1;j++)
{
if (mass_books[j]>mass_books[j+1])
{
prom = mass_books[j+1];
mass_books[j+1] = mass_books[j] ;
mass_books[j] = prom;
}
}
}
for(i=0;i<N;i++)
cout<<mass_books[i]<<endl;
for (j = 0; j < N; j++)
sum = sum + mass_books[j];
for (i = N - 1; sum > L; i--)
sum = sum - mass_books[i];
cout << "Максимальное количество книг на полке: " <<i + 1 << endl;
system("pause");
}
return 0;
}
P.S. накидал заголовочных файлов, но ни с чем не проходит.
Это называется "вуду-программирование". Основная идея в том чтобы случайным образом "накидывать" разные команды. Если уж вы решили его использовать, попробуйте и другие популярные приемы этой парадигмы:
try catch блокиP.S. Но я бы просто зашел на сайт типа cplusplus.com или cppreference.com, а то и просто в гугл и посмотрел в каких именно библиотеках находятся функции qsort и sort
P.P.S. cstdlib и algorithm соответственно
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости