• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd w kompilacji programu w C++

Object Storage Arubacloud
0 głosów
176 wizyt
pytanie zadane 23 listopada 2018 w C i C++ przez Hailon Początkujący (310 p.)

Witam!

Męczę się z komunikatem pod tytułem "error: scalar object 'Snames' requires one element in initializer"... Zadanie wymaga odemnie, abym użył typu const * char, ale nie mogę obejść tego błędu. Proszę o wskazówkę jak sobie z tym poradzić ;) 

#include <iostream>
const int Seasons = 4;
const char * Snames = {"Wiosna", "Lato", "Jesien", "Zima"};

void fill(char * table, int liczba, double table2[]);
void show(char * table, int liczba, double table2[]);

int main()
{
    double wydatki[4];
    fill(Snames, Seasons, wydatki);
    show(Snames, Seasons, wydatki);
    return 0;
}

void fill(char * table, int liczba, double table2[])
{
    using namespace std;
    for (int i = 0; i < liczba; i++)
    {
        cout << "Podaj wydatki za okres >>" << table[i] << "<<: ";
        cin >> table2[i];
        table[i] = table2[i];
    }
}
void show(char * table, int liczba, double table2[])
{
    using namespace std;
    double total = 0.0;
    cout << "\nWYDATKI\n";
    for (int i = 0; i < liczba; i++)
    {
        cout << table[i] << ": " << table2[i] << " zl" << endl;
        total += table2[i];
    }
    cout << "Laczne wydatki roczne: " << total << " zl " << endl;
}

1 odpowiedź

0 głosów
odpowiedź 24 listopada 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Jeżeli tworzysz tablicę, która ma przechowywać elementy typu char* to musisz użyć zapisu:

char* nazwa[] = ...

Albo:

char** nazwa = ...

A ty tworzysz po prostu wskaźnik na char (wskaźnik na pojedynczy znak) i przypisujesz do niego tablicę zawierającą łańcuchy znaków.

komentarz 24 listopada 2018 przez Hailon Początkujący (310 p.)
Hmm... okej, ale dalej otrzymuje jakies ostrzeżenia, a w dodatku pojawił się kolejny błąd... Jestem kropce :/

1. deprecated conversion from string constant to 'char*' [-Wwrite-strings]|

2. cannot convert 'char**' to 'char*' for argument '1' to 'void fill(char*, int, double*)

    cannot convert 'char**' to 'char*' for argument '1' to 'void show(char*, int, double*)

Jakies sugestie?
komentarz 24 listopada 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)
No takie sugestie, że sama zmiana typu tablicy nie wystarczy. Musisz teraz również przystosować swoje funkcje do tego, by były w stanie taką tablicę wskaźników przyjąć jako parametr.

Podobne pytania

0 głosów
1 odpowiedź 187 wizyt
pytanie zadane 23 marca 2019 w C i C++ przez Hailon Początkujący (310 p.)
0 głosów
1 odpowiedź 397 wizyt
pytanie zadane 1 marca 2019 w C i C++ przez Hailon Początkujący (310 p.)
0 głosów
1 odpowiedź 115 wizyt
pytanie zadane 12 lutego 2019 w C i C++ przez Hailon Początkujący (310 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...