Столкнулся с проблемой при решении задачи на 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 соответственно
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Ребят, помогите, пожалуйста с реализацией алгоритма cosалгоритм cos Описанный там алгоритм, не могу понять, может сможете объяснить на понятном...
Прошу вас объяснить или же указать на источник где можно подробно прочитать способ использования одной библиотеки Arduino в другойВ частности,...