Problém s polem – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s polem – C / C++ – Fórum – Programujte.comProblém s polem – C / C++ – Fórum – Programujte.com

 

2. 4. 2008   #1
-
0
-

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;
}

Nahlásit jako SPAM
IP: 80.250.9.–
mephi0
Expert
2. 4. 2008   #2
-
0
-

no asi sa mu nepači, že ako index davaš hodnotu double a ma strach že od neho budeš chcieť 2.5-tý prvok.

002-1.cpp:
zmeň:

double max, min, celkem, i;

na
double max, min, celkem;

int i;

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
2. 4. 2008   #3
-
0
-

To mephi :
Díky moc, nevím, jak jsem tak hloupou chybu mohl udelat :)

Nahlásit jako SPAM
IP: 80.250.9.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 125 hostů

Podobná vlákna

Problém s polem — založil Axik

Problém s polem — založil K4BlOs

Problém s polem — založil renet

Problem s polem — založil Tomik

Includovani - problem s polem — založil Earl Cash

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý