Как я могу исправить это [Ошибка] не удается преобразовать ‘float [6]’ в float в присваивании

#c #arrays #if-statement

#c #массивы #if-statement

Вопрос:

Это мой код ниже, у меня ошибка. ([Ошибка] не удается преобразовать ‘float [6]’ в float при присваивании.) Я не знаю, что делать или что вкладывать в прибыль… Моя цель — поместить самые высокие расходы, самую высокую прибыль и самую низкую прибыль ниже. но у меня такая ошибка. введите описание изображения здесь

 #include <iostream>
#include <string>
using namespace std;
int main(){
int month[] = {1,2,3,4,5,6};
float profit;
string monthName;
float sales[6] = {1000, 1500, 2500, 5000, 4000, 1800};
float expenses[6] = {500, 250, 100, 1000, 200, 800};
float totalex=0,totalsale=0,totalprofit;


float highSales=0, highExp=0, highProf=0, lowProf=0;
string highMonth="";

cout << "Company Sales and Expenses For 2020" << endl;  

for (int i=0; i <=6; i   ) {
    profit = sales[i]-expenses[i];
    totalprofit =profit;
    totalsale =sales[i];
    totalex =expenses[i];
    switch(month[i]) {
        case 1:  monthName="January"; break;
        case 2:  monthName="February"; break;
        case 3:  monthName="March"; break;
        case 4:  monthName="April"; break;
        case 5:  monthName="May"; break;
        case 6:  monthName="June"; break;
        
    }
    if(sales[i]>highSales) {
          highSales = sales[i];
          highMonth = monthName;
          highExp = expenses;
          highProf = profit;
          lowProf = profit;
    }
    
    cout <<"nn" << monthName<<"tt"<<sales[i]<<"tt"<<expenses[i]<<"ttt"<<profit;
   }


cout << "nSummary : " << endl;
   cout << "tTotal Sales : " << totalsale << endl;
   cout << "tTotal Expenses : " << totalex << endl;
   cout << "tTotal Profit : " << totalprofit << endl;

   cout << "tHighest Sales : " << highSales << "tMonth of " << highMonth << endl;
   cout << "tHighest Expenses : " << highExp << "tMonth of " << highMonth << endl;
   cout << "tHighest Profit : " << highProf << "tMonth of " << highMonth << endl;
   cout << "tLowest Profit : " << lowProf   << "tMonth of "  << highMonth << endl;

   cout << "nProgrammed by: ";
          
    return 0;
}
 

Это мой код выше. Проблема в том, что я не могу напечатать самые высокие расходы, самую высокую прибыль и самую низкую прибыль. Я не могу скомпилировать и запустить, как показывает эта ошибка [Ошибка] не удается преобразовать ‘float [6]’ в float в присваивании.

Комментарии:

1. Подсказка: компилятор сообщает вам, в какой строке возникла проблема. Например, мой компилятор сообщил мне, что ошибка находится в строке 35. Я посмотрел там и обнаружил опечатку: highExp = expenses; должно быть highExp = expenses[i];

Ответ №1:

highExp = expenses; в этой строке highExp — это значение с плавающей запятой, а expenses — a float[6] , следовательно, вы пытаетесь присвоить массиву с плавающей запятой значение с плавающей запятой, которое недопустимо.

Кроме for (int i=0; i <=6; i ) { того, это приведет к ошибкам, sales[6] которых нет в продажах, так как начало продаж sales[0] и заканчивается на sales[5] , то же самое с expenses .

Комментарии:

1. на данный момент у меня возникают проблемы с выравниванием

2. Делайте это по одному шагу за раз и ищите вещи, которые вам трудно понять.

3. это в этом разделе: cout << имя_месяца << » t» <<продажи [i] << » t» <<расходы [i] << » t» << прибыль << endl; Я изо всех сил пытаюсь исправить выравнивание чисел в разделе прибыли. вроде все в порядке, за исключением чисел в proft.

4. Я не совсем уверен, что вы имеете в виду, но, возможно en.cppreference.com/w/cpp/io/manip/setw функция std::setw может быть полезна для установки фиксированной ширины строки для значения прибыли

5. теперь я включил изображение, февральская часть вообще не выровнена, в отличие от остальных