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

Problem z kodem C++

Object Storage Arubacloud
0 głosów
511 wizyt
pytanie zadane 24 kwietnia 2016 w C i C++ przez Mikusbombro Użytkownik (990 p.)
edycja 24 kwietnia 2016 przez Mikusbombro

Chciałem stworzyć kalkulator używając języka obiektowego C++. Napisałem kod:

main.cpp

#include <iostream>
#include "obliczenia.h"

using namespace std;

int main()
{
    Obliczenia d1;

    d1.wczytaj();
    d1.oblicz();

    return 0;
}

obliczenia.h

#include <iostream>

using namespace std;

class Obliczenia
{
    public:
    int skladnik1, skladnik2, odjemna, odjemnik, czynnik1, czynnik2, dzielna, dzielnik, wybor;


    void wczytaj();
    void oblicz();
};

obliczenia.cpp
 

#include <iostream>
#include "obliczenia.h"

using namespace std;

void Obliczenia::wczytaj()
{
    cout<<"1 - Dodawanie";
    cout<<endl<<"2 - Odejmowanie";
    cout<<endl<<"3 - Mnozenie";
    cout<<endl<<"4 - Dzielenie";
    cout<<endl<<"Wybierz: ";
    cin>>wybor;
}

void Obliczenia::oblicz()
{
    if (wybor=="1")
    {
        cout<<endl<<"Podaj pierwszy skladnik: ";
        cin>>skladnik1;
        cout<<endl<<"Podaj drugi skladnik: ";
        cin>>skladnik2;
        cout<<endl<<"Wynik: "<<skladnik1+skladnik2;
    }
}

I wyskakuje mi:

||=== Build: Debug in ćwiczenia (compiler: GNU GCC Compiler) ===|
H:\Documents and Settings\komp\Moje dokumenty\ćwiczenia\Obliczenia.cpp||In member function 'void Obliczenia::oblicz()':|
H:\Documents and Settings\komp\Moje dokumenty\ćwiczenia\Obliczenia.cpp|18|warning: comparison with string literal results in unspecified behaviour [-Waddress]|
H:\Documents and Settings\komp\Moje dokumenty\ćwiczenia\Obliczenia.cpp|18|error: ISO C++ forbids comparison between pointer and integer [-fpermissive]|
||=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 3 second(s)) ===|

Proszę, pomóżcie. Próbowałem już, ale kompletnie nie wiem o co chodzi.

 

 

 

komentarz 24 kwietnia 2016 przez TheFeniks Gaduła (4,690 p.)
Wklej kod w odpowiednią ramkę : http://forum.pasja-informatyki.pl/faq#faq1

1 odpowiedź

+1 głos
odpowiedź 24 kwietnia 2016 przez Patryk Krajewski Nałogowiec (26,170 p.)
wybrane 24 kwietnia 2016 przez Mikusbombro
 
Najlepsza
Wybor to zmienna int, a ty porównujesz ją ze stringem.
komentarz 24 kwietnia 2016 przez Mikusbombro Użytkownik (990 p.)

Dzięki :) Zmieniłem wybor na zmienną string i problem zniknął. Ale pojawił się nowy. Teraz po skompilowaniu wyskakuje komunikat:

||=== Build: Debug in ćwiczenia (compiler: GNU GCC Compiler) ===|
obj\Debug\Obliczenia.o||In function `ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_EPKS3_':|
H:\Documents and Settings\komp\Moje dokumenty\ćwiczenia\obliczenia.cpp|7|multiple definition of `Obliczenia::wczytaj()'|
obj\Debug\Obliczenia.o:H:\Documents and Settings\komp\Moje dokumenty\ćwiczenia\obliczenia.cpp|7|first defined here|
obj\Debug\Obliczenia.o||In function `ZN10Obliczenia6obliczEv':|
H:\Documents and Settings\komp\Moje dokumenty\ćwiczenia\obliczenia.cpp|17|multiple definition of `Obliczenia::oblicz()'|
obj\Debug\Obliczenia.o:H:\Documents and Settings\komp\Moje dokumenty\ćwiczenia\obliczenia.cpp|17|first defined here|
||error: ld returned 1 exit status|
||=== Build failed: 5 error(s), 0 warning(s) (0 minute(s), 3 second(s)) ===|
 

Coś z nawiasami jest nie tak, ale nie wiem co. Fajnie by było, gdybyś znów pomógł.

komentarz 24 kwietnia 2016 przez Garniturek Użytkownik (820 p.)
edycja 24 kwietnia 2016 przez Garniturek

wybór jest zmienną typu int, więc nie możesz go porównywać w ten sposób:

if (wybor=="1")

//sorry odpowiedziałem nie na to pytanie

 

komentarz 24 kwietnia 2016 przez Patryk Krajewski Nałogowiec (26,170 p.)
A nie piszesz przypadkiem 2 razy ciała funkcji? Nie zmieniałeś nic w kodzie od wysłania oprócz tego typu na string?
komentarz 24 kwietnia 2016 przez Mikusbombro Użytkownik (990 p.)
Oprócz tego nic.
komentarz 24 kwietnia 2016 przez Patryk Krajewski Nałogowiec (26,170 p.)

Spróbuj użyć strażniku nagłówka czyli na początku pliku .h dodaj:

#ifndef OBLICZENIA_H
#define OBLICZENIA_H

a na końcu

#endif

EDIT: Jak nie zadziała to powiedz jakie środowisko.

komentarz 24 kwietnia 2016 przez Mikusbombro Użytkownik (990 p.)
Nie działa. A środowisko to Code::Blocks.
komentarz 24 kwietnia 2016 przez Patryk Krajewski Nałogowiec (26,170 p.)
Też mam codeblocksa i mi działa. Skopiuj kod który wkleiłeś w temacie i zmień warunek na if(wybor == 1).
1
komentarz 24 kwietnia 2016 przez niezalogowany
Jak masz jakieś pliki *.o w folderze z projektem to je usuń.
komentarz 24 kwietnia 2016 przez Mikusbombro Użytkownik (990 p.)
Cudownie, działa! Nareszcie udało mi się rozwiązać problem z którym borykałem się kilka godzin :)

Podobne pytania

0 głosów
1 odpowiedź 87 wizyt
pytanie zadane 26 listopada 2020 w C i C++ przez batheo Nowicjusz (170 p.)
0 głosów
1 odpowiedź 181 wizyt
pytanie zadane 7 października 2019 w Rozwój zawodowy, nauka, praca przez Matix Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 247 wizyt
pytanie zadane 2 maja 2017 w C i C++ przez TheFeniks Gaduła (4,690 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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!

...