Zdravím. Už nějakou dobu se pokouším trochu pohnout s C++. To se učím podle knížky Mistrovství v C++. Teď jsem ale narazil na problém, nad kterým už sedím docela dost dlouho a nemůžu za Boha přijít na to, co jsem udělal špatně. Kompilátor vyhazuje plno chyb:
sh-3.2$ g++ 002.h 002-1.cpp 002-2.cpp -o 002
002-1.cpp: In function ‘void SALES::setSales(SALES::Sales&, const double*, int)’:
002-1.cpp:18: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:18: error: invalid types ‘const double*[double]’ for array subscript
002-1.cpp:19: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:20: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:21: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:22: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:23: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:34: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:34: error: invalid types ‘const double*[double]’ for array subscript
002-1.cpp:35: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:36: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:37: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:38: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:39: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:45: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp: In function ‘void SALES::setSales(SALES::Sales&)’:
002-1.cpp:66: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:66: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:67: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:68: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:69: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:70: error: invalid types ‘double [4][double]’ for array subscript
002-1.cpp:71: error: invalid types ‘double [4][double]’ for array subscript
Díky za pomoc a budu rád za jakékoli připomínky. Vím, že je to asi dost "prasácky" napsané, proto jsem rád za každou pomoc. Chybami se člověk učí, že? :)
002.h:
#ifndef SALES_H
#define SALES_H
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales & s, const double ar[], int n);
void setSales(Sales & s);
void showSales(const Sales & s);
}
#endif
002-1.cpp:
#include <iostream>
#include <climits>
#include "002.h"
namespace SALES
{
void setSales(Sales & s, const double ar[], int n)
{
double max, min, celkem, i;
celkem = 0;
max = INT_MIN;
min = INT_MAX;
if (n >= 4)
{
for (i = 0; i < 4; i++)
{
s.sales[i] = ar[i];
celkem += s.sales[i];
if (s.sales[i] > max)
max = s.sales[i];
if (s.sales[i] < min)
min = s.sales[i];
}
s.average = (celkem / 4);
s.max = max;
s.min = min;
}
else
{
for (i = 0; i < n; i++)
{
s.sales[i] = ar[i];
celkem += s.sales[i];
if (s.sales[i] > max)
max = s.sales[i];
if (s.sales[i] < min)
min = s.sales[i];
}
s.average = (celkem / n);
s.max = max;
s.min = min;
for (int j = n; j < QUARTERS; j++)
s.sales[i] = 0.0;
}
}
void setSales(Sales & s)
{
std::cout << "Zadejte výši prodeje v jednotlivých čtvrtletích:\n";
double sales[4];
for (int i = 0; i < 4; i++)
{
std::cout << i+1 << ". čtvrtletí: ";
std::cin >> sales[i];
}
double max, min, celkem, i;
celkem = 0;
max = INT_MIN;
min = INT_MAX;
for (i = 0; i < 4; i++)
{
s.sales[i] = sales[i];
celkem += s.sales[i];
if (s.sales[i] > max)
max = s.sales[i];
if (s.sales[i] < min)
min = s.sales[i];
}
s.average = (celkem / 4);
s.max = max;
s.min = min;
}
void showSales(const Sales & s)
{
std::cout << "Prodeje za čtvrtletí tohoto roku:\n";
for (int i = 0; i < 4; i++)
std::cout << i+1 << ". čtvrtletí: " << s.sales[i] << "\n";
std::cout << "Průměrný prodej za rok: " << s.average;
std::cout << "\nNejvyšší prodej za rok: " << s.max;
std::cout << "\nNejnižší prodej za rok: " << s.min << "\n\n";
}
}
002-2.cpp:
#include <iostream>
#include "002.h"
int main()
{
using namespace SALES;
Sales s1;
Sales s2;
double prodeje[3] = {250250.0, 140250.5, 22040.0};
setSales(s1);
std::cout << "\n1. struktura:\n";
showSales(s1);
setSales(s2, prodeje, 3);
std::cout << "\n2. struktura:\n";
showSales(s2);
return 0;
}