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

Problem z kompilacja w g++

VPS Starter Arubacloud
0 głosów
185 wizyt
pytanie zadane 7 marca 2022 w C i C++ przez M1KS0N Nowicjusz (240 p.)
Cześć mam problem kiedy ten kod https://pastebin.com/WAmJeP1y kompiluje w g++ to wyrzuca bledy co nalezy poprawic aby to działało
komentarz 7 marca 2022 przez VBService Ekspert (251,250 p.)
edycja 7 marca 2022 przez VBService

BTW, deklarujesz zmienna d linia 87

float a,b,c,d,p,P;

a nie "używasz" jej

int heron()
{
    float a, b, c, d, p, P;

    cout << "Podaj dlugosc boku A: "; cin >> a;
    cout << "Podaj dlugosc boku B: "; cin >> b;
    cout << "Podaj dlugosc boku C: "; cin >> c;

    p = (a+b+c)/2;
    P = sqrt(p*(p-a)*(p-b)*(p-c));
    
    cout << "Pole trojkata = " << P << endl;
    system("pause"); 
}

 

skoro w linii 126 masz

cout << "9.Konczenie programu"<< endl;

to po co ta funkcja linia 98 i linia 140 ten case

case 9:koniec();system("cls");main();break;

"tworzenie" funkcji koniec (Moim zdaniem) ma sens gdy kod tej funkcji np. zwalnia zasoby, zamyka "otwarte" połączenia itd., a pytanie się o wciśnięcie litery (w Twoim kodzie e) po tym jak już użytkownik nacisnął 9 to Moim zdaniem "masło-maślane", no i skoro kończysz program to po co wywołujesz funkcję main()

propozycja

case 9: exit(0); system("cls"); break;

 

 

P.S ewentualne zastosowanie (propozycja) w tym przypadku funkcji koniec  wink

void koniec()
{   
    char a;
    while (true)
    {
        cout << "Czy napewno chcesz zakonczyc program? [t/n]: ";
        cin >> a;
        if (a == 't' || a == 'T') exit(0);
        if (a == 'n' || a == 'N') break;
    }
}

int main()
{
    ...
    case 9: koniec(); system("cls"); main(); break;
}

 

3 odpowiedzi

+1 głos
odpowiedź 7 marca 2022 przez adrian17 Ekspert (344,100 p.)
edycja 7 marca 2022 przez adrian17

Tylko zaznaczę że 

to wyrzuca bledy

g++ nie mówi "nie podoba mi się, nie pozwalam" tylko mówi dokładnie jakie są błędy i gdzie. Więc

co nalezy poprawic aby to działało

Po co pytać ludzi jak już masz odpowiedzi dane na tacy, wystarczy je przeczytać:

<source>: In function 'int dodawanie()':
<source>:15:1: warning: no return statement in function returning non-void [-Wreturn-type]
   15 | }
      | ^

Funkcja nic nie zwraca, a jest niby zadeklarowana że ma zwracać inta.

<source>: In function 'int main()':
<source>:118:31: error: expected primary-expression before ';' token
  118 |     cout << "1. Dodawanie" << ;
      |                              ^

Brakuje czegoś między `<<` a `;`.

0 głosów
odpowiedź 7 marca 2022 przez toko Mądrala (7,210 p.)

Nie zwracasz wartości w funkcjach, przy takim sposobie zamień je na void. int miałoby sens jeśli one by liczyły, a wypisywała jakaś inna funkcja.

W linii 118 brakuje endl;

0 głosów
odpowiedź 7 marca 2022 przez M1KS0N Nowicjusz (240 p.)
Dzięki za wszystkie  odpowiedzi. Ustawilem voida zamiast inta i jest git. Teraz mam jedynie ostrzezenie  iso c++ forbids taking address of function ::main co trzeba zrobic aby tego sie pozbyc. A i jeszcze nie dziala mi cls macie jakies rady jak to ogarnac ?
komentarz 7 marca 2022 przez adrian17 Ekspert (344,100 p.)

Teraz mam jedynie ostrzezenie  iso c++ forbids taking address of function ::main co trzeba zrobic aby tego sie pozbyc

Ma rację, nie powinno się ręcznie wołać main()a. Ogólnie Twoje podejście tutaj przez powtarzanie programu przez nieskończoną rekurencją jest słabe, bo zamiast tego można po prostu zrobić... pętlę.

A i jeszcze nie dziala mi cls macie jakies rady jak to ogarnac ?

"nie działa" nic nikomu nie mówi, musisz nauczyć się przestać pisać ogólnikami :)

komentarz 7 marca 2022 przez M1KS0N Nowicjusz (240 p.)
komenda system(cls) jak dobrze rozumiem czysci konsole a u mnie to sie nie dzieje.
komentarz 7 marca 2022 przez VBService Ekspert (251,250 p.)
edycja 7 marca 2022 przez VBService

Dodaj

#include <windows.h> 

windows.h

 

 is a Windows-specific header file for the C and C++ programming languages which contains declarations for all of the functions in the Windows API

 

Windows API  ==> Windows Shell

komentarz 7 marca 2022 przez adrian17 Ekspert (344,100 p.)
Nie, to nie ma zupełnie związku...

M1KS0N, jesteś w ogóle na Windowsie? Bo `cls` to komenda tylko windowsowa.

Podobne pytania

+1 głos
1 odpowiedź 282 wizyt
pytanie zadane 27 września 2023 w C i C++ przez Niejaki Nowicjusz (170 p.)
0 głosów
1 odpowiedź 152 wizyt
pytanie zadane 14 marca 2017 w C i C++ przez aspoka Mądrala (5,290 p.)
0 głosów
0 odpowiedzi 152 wizyt
pytanie zadane 10 października 2017 w Rozwój zawodowy, nauka, praca przez maxeee Początkujący (340 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...