Дано задание на шаблоны функций: перестановка элементов в массиве следующим образом: сначала отрицательные элементы в порядке убывания, затем неотрицательные в порядке возрастания.
Есть 2 аргумента char и double
Как конвертировать массив char в int? И где может быть ошибка?
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
template <typename T>
void swap(T& first, T& second)
{
T temp(first);
first = second;
second = temp;
}
template <typename T1>
void out_array(const T1* array, size_t arraySize)
{
for (size_t i = 0; i < arraySize; ++i)
std::cout << array[i] << " ";
std::cout << std::endl;
}
template <class T1>
void sort_array(T1* array, size_t arraySize)
{
T1 temp;
for (size_t i = 0; i < arraySize - 1; i++)
{
for (size_t j = 0; j < arraySize - i - 1; j++)
{
if (array[j] < 0)
if (array[j] < array[j + 1])
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
if (array[j] > 0)
if (array[j] > array[j + 1])
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
int main()
{
setlocale(0, "");
const size_t n = 10;
double array1[n] = { 2.1,1.1,4.2,5.2,3.1,-3.1,-1.2,-2.3,-4.4,-5.6 };
char array2[n] = { '2','1','4','5','3','-3','-1','-2','-4','-5' };
int array3[n] = atoi(array2);
std::cout << "Неотсортированный массив:" << std::endl;
out_array(array1, n);
out_array(array3, n);
sort_array(array1, n);
sort_array(array2, n);
std::cout << "Отсортированный массив:" << std::endl;
out_array(array1, n);
out_array(array3, n);
}
Выдает ошибку:
1>lab5.cpp
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,41): warning C4838: преобразование из "int" в "char" требует сужающего преобразования
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,66): warning C4305: инициализация: усечение из "int" в "char"
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,41): warning C4309: инициализация: усечение константного значения
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,46): warning C4838: преобразование из "int" в "char" требует сужающего преобразования
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,46): warning C4309: инициализация: усечение константного значения
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,51): warning C4838: преобразование из "int" в "char" требует сужающего преобразования
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,51): warning C4309: инициализация: усечение константного значения
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,56): warning C4838: преобразование из "int" в "char" требует сужающего преобразования
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,56): warning C4309: инициализация: усечение константного значения
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,61): warning C4838: преобразование из "int" в "char" требует сужающего преобразования
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(52,61): warning C4309: инициализация: усечение константного значения
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(53,35): error C2440: инициализация: невозможно преобразовать "int" в "int [10]"
1>C:\Prog\Visual Studio 2019\lab5\lab5.cpp(53,16): message : Не существует преобразований в типы массивов, хотя существуют преобразования в ссылки или указатели на массивы
1>Сборка проекта "lab5.vcxproj" завершена с ошибкой.