Jezyk C, zdefiniowanie klasy - poprawienie bledu
-
- Użytkownik
- Posty: 327
- Rejestracja: 23 mar 2009, o 21:51
- Płeć: Mężczyzna
- Lokalizacja: Świdnica
- Podziękował: 10 razy
- Pomógł: 62 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
Dokładnie, to ma być w końcu C, czy C++? a może poprostu? Heh argv wkroczył i wszystko wyjaśnił, czyżby to stąd ten nick?:>
-
- Użytkownik
- Posty: 124
- Rejestracja: 10 paź 2008, o 22:54
- Płeć: Kobieta
- Podziękował: 46 razy
- Pomógł: 12 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
Szczerze mowiac mimo wszystko wole miec w tym programie jak najwiecej jezyka C, bo C++ nawet nie zaczelismy, teraz dopiero dowiaduje sie od Was, ze klasy sa w C++. Tego jezyka w ogole nie znam, dlatego mimo wszystko wolalabym miec jak najwiecej formul z jezyka C.
Widzisz moze, co musze poprawic, zeby program dzialal i jednoczesnie byl analogicznie zrobiony do tamtego? Bo staralam sie go napisac wlasciwie dokladnie w ten sam sposob, ale gdzies musialam zrobic blad i nie moge go teraz znalezc.
W zadaniu priorytetem jest, zeby to byla klasa, ja chcialam, zeby bylo jak najwiecej formul z jezyka C w tym programie.
Widzisz moze, co musze poprawic, zeby program dzialal i jednoczesnie byl analogicznie zrobiony do tamtego? Bo staralam sie go napisac wlasciwie dokladnie w ten sam sposob, ale gdzies musialam zrobic blad i nie moge go teraz znalezc.
W zadaniu priorytetem jest, zeby to byla klasa, ja chcialam, zeby bylo jak najwiecej formul z jezyka C w tym programie.
- argv
- Użytkownik
- Posty: 569
- Rejestracja: 27 maja 2009, o 01:27
- Płeć: Mężczyzna
- Podziękował: 51 razy
- Pomógł: 66 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
Kod: Zaznacz cały
#include <iostream>
#include <cstdlib>
using namespace std;
/* --------------------------------------------------------------------------- *
*
* --------------------------------------------------------------------------- */
class Samochod {
private:
string marka;
string kolor;
int stan_optyczny;
int stan_techniczny;
public:
void Zaprezentuj();
void Maluj(string nowyKolor);
void WizytaWWarsztacie(int nakladFinansowy);
void Wypadek(int moc); // niestety i tak^(1) mo?liwooe? musimy dopuoeci?
void Tuning (int nakladFinansowy);
Samochod();//konstruktory
Samochod(string mar, string kol, int op, int stan);
bool Samochod::operator>(Samochod p)//mo?emy nawet definiowa? operatory dla obiektów które tworzymy
{
if ( stan_techniczny > p.stan_techniczny )
return 1;
else
return 0;
}
};
int main()
{
Samochod auto1;
Samochod auto2("Audi A4","Czarny",45,50);
cout << "Samochod pierwszy:" << endl;
auto1.Zaprezentuj();
cout << "Samochod drugi:
" << endl;
auto2.Zaprezentuj();
auto1.Wypadek(50);
cout <<"Samochod pierwszy po wypadku:" << endl;
auto1.Zaprezentuj();
cout << "Naprawmy samochod pierwszy." << endl;
auto1.WizytaWWarsztacie(40);
cout << "Samochod pierwszy po naprawie:" << endl;
auto1.Zaprezentuj();
}
Samochod::Samochod()
{
marka = "Golf 2";
kolor = "Czerwony";
stan_optyczny= 90;
stan_techniczny = 80;
}
Samochod::Samochod(string mar, string kol, int op, int stan) //a oto konstruktor prze^(3)adowany pozwalaj^(1)cy stworzy? nam taki obiekt jaki chcemy
{
marka = mar;
kolor = kol;
stan_optyczny= op;
stan_techniczny = stan;
}
void Samochod::Zaprezentuj()
{
cout << "Marka: " << marka << " Kolor: " << kolor << endl;
}
void Samochod::Maluj(string nowy)
{
kolor = nowy;
stan_optyczny +=5;
}
void Samochod::WizytaWWarsztacie( int naklad_finansowy )
{
cout << "Naprawa zakonczona
" << endl;
if( naklad_finansowy + stan_techniczny >=100 )
stan_techniczny =99; //mimo nak^(3)adu auto nowe sie^ nie stanie
else
stan_techniczny +=naklad_finansowy;
stan_optyczny += naklad_finansowy/2;
}
void Samochod::Wypadek(int moc)
{
if(stan_techniczny - moc < 0 )
stan_techniczny = 0;
else
stan_techniczny -=moc;
stan_optyczny-= moc;
}
void Samochod::Tuning(int naklad_finansowy)
{
srand((unsigned)time( NULL ));
int czynnik_losowy = rand()%100-100;
if(czynnik_losowy > 0) {
cout << "Super. Efekt przewyzszyl naklad
" << endl;
stan_optyczny += naklad_finansowy + czynnik_losowy;
}
else {
cout << "Niestety. Efekt koncowy nie zadziwi^(3)
" << endl;
stan_optyczny += naklad_finansowy%20 + czynnik_losowy;
}
}
Akurat teraz napisałaś że bliższe C ma być podczas mojego tworzenia, więc pewnie się nie przyda ale jak już się napisałem to niech będzie
Szybkie poprawki, brakuje tu mnóstwa rzeczy należnych c++ ale dziala .. troche pousuwalem bo nie chcialo mi się wszystkiego zmieniac, ale powino sie troche rozjasnic ...
Swoją drogą dziwni ludzie każą robić groch z kapustą i mącić w głowach
-
- Użytkownik
- Posty: 124
- Rejestracja: 10 paź 2008, o 22:54
- Płeć: Kobieta
- Podziękował: 46 razy
- Pomógł: 12 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
Mysle, ze jednak Twoja wersja moze sie przydac. Dziekuje za nia.
Probowalam zmienic u siebie void na int juz wczesniej, ale nadal sa bledy:
1.obj : error LNK2019: unresolved external symbol "public: int __thiscall Punkt::przesun_trzecia_wspolrzedna(int)" (?przesun_trzecia_wspolrzedna@Punkt@@QAEHH@Z) referenced in function _main
1.obj : error LNK2019: unresolved external symbol "public: int __thiscall Punkt::przesun_druga_wspolrzedna(int)" (?przesun_druga_wspolrzedna@Punkt@@QAEHH@Z) referenced in function _main
1.obj : error LNK2019: unresolved external symbol "public: int __thiscall Punkt::przesun_pierwsza_wspolrzedna(int)" (?przesun_pierwsza_wspolrzedna@Punkt@@QAEHH@Z) referenced in function _main
C:Documents and SettingsAdministratorDesktop1Debug1.exe : fatal error LNK1120: 3 unresolved externals
Nie wiem jak dokladnie zmienic swoj kod.
Probowalam zmienic u siebie void na int juz wczesniej, ale nadal sa bledy:
1.obj : error LNK2019: unresolved external symbol "public: int __thiscall Punkt::przesun_trzecia_wspolrzedna(int)" (?przesun_trzecia_wspolrzedna@Punkt@@QAEHH@Z) referenced in function _main
1.obj : error LNK2019: unresolved external symbol "public: int __thiscall Punkt::przesun_druga_wspolrzedna(int)" (?przesun_druga_wspolrzedna@Punkt@@QAEHH@Z) referenced in function _main
1.obj : error LNK2019: unresolved external symbol "public: int __thiscall Punkt::przesun_pierwsza_wspolrzedna(int)" (?przesun_pierwsza_wspolrzedna@Punkt@@QAEHH@Z) referenced in function _main
C:Documents and SettingsAdministratorDesktop1Debug1.exe : fatal error LNK1120: 3 unresolved externals
Nie wiem jak dokladnie zmienic swoj kod.
- argv
- Użytkownik
- Posty: 569
- Rejestracja: 27 maja 2009, o 01:27
- Płeć: Mężczyzna
- Podziękował: 51 razy
- Pomógł: 66 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
Proponuję przenieść się na Dev C++
Bo C++ w visualu to C++ microsoftu i różni się od standardu c++ w kilku miejscach ... więc wydaje mi się że nie ma sensu wdawać się w kolejne utrudnienia
Bo C++ w visualu to C++ microsoftu i różni się od standardu c++ w kilku miejscach ... więc wydaje mi się że nie ma sensu wdawać się w kolejne utrudnienia
-
- Użytkownik
- Posty: 327
- Rejestracja: 23 mar 2009, o 21:51
- Płeć: Mężczyzna
- Lokalizacja: Świdnica
- Podziękował: 10 razy
- Pomógł: 62 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
Visual Studio czasem naciaga standard ale za to DevCpp już dawno przestał być rozwijany
a do autora, to co wyplywa linker to to że nie może znaleźć tych funkcji, które podaje, nie zdefiniowałeś ich.
a do autora, to co wyplywa linker to to że nie może znaleźć tych funkcji, które podaje, nie zdefiniowałeś ich.
- argv
- Użytkownik
- Posty: 569
- Rejestracja: 27 maja 2009, o 01:27
- Płeć: Mężczyzna
- Podziękował: 51 razy
- Pomógł: 66 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
Ja wklepałem to do Visuala i on łyknął, pomijąjąc warningi nie mam żadnych problemów z linkerem.
Stwórz sobie nowy pusty projekt i wklej ... albo zmień środowisko na odpowiedniejsze
Stwórz sobie nowy pusty projekt i wklej ... albo zmień środowisko na odpowiedniejsze
-
- Użytkownik
- Posty: 327
- Rejestracja: 23 mar 2009, o 21:51
- Płeć: Mężczyzna
- Lokalizacja: Świdnica
- Podziękował: 10 razy
- Pomógł: 62 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
Nie ma odpowiedniejszego środowiska możesz spróbować Eclipse ewentualnie, albo nawet kompilować z linii poleceń ale błąd jest w kodzie Poprawię Ci kod, tylko wrzuć tutaj jego aktualną wersję. Akurat mam VS odpalonego to sprawdze
-
- Użytkownik
- Posty: 124
- Rejestracja: 10 paź 2008, o 22:54
- Płeć: Kobieta
- Podziękował: 46 razy
- Pomógł: 12 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
#include <stdafx.h>
#include <stdio.h>
#include <string.h>
#include <Windows.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
class Punkt
{
private:
int pierwsza_wspolrzedna;
int druga_wspolrzedna;
int trzecia_wspolrzedna;
public:
int zaprezentuj();
int przesun_pierwsza_wspolrzedna(int nowa_pierwsza);
int przesun_druga_wspolrzedna(int nowa_druga);
int przesun_trzecia_wspolrzedna(int nowa_trzecia);
Punkt();
Punkt(int pierwsza, int druga, int trzecia);
};
void main()
{
Punkt Punkt_A;
Punkt Punkt_B(2, 3, 5);
printf("Punkt A:
");
getch();
Punkt_A.zaprezentuj();
printf("Punkt B:
");
getch();
Punkt_B.zaprezentuj();
getch();
Punkt_A.przesun_pierwsza_wspolrzedna(1);
Punkt_A.przesun_druga_wspolrzedna(1);
Punkt_A.przesun_trzecia_wspolrzedna(1);
printf("Punkt A po przesunieciu o wektor [1, 1, 1]:
");
Punkt_A.zaprezentuj();
getch();
}
Punkt::Punkt()
{
pierwsza_wspolrzedna = 0;
druga_wspolrzedna = 0;
trzecia_wspolrzedna = 0;
}
Punkt::Punkt(int pierwsza, int druga, int trzecia)
{
pierwsza_wspolrzedna = pierwsza;
druga_wspolrzedna = druga;
trzecia_wspolrzedna = trzecia;
}
int Punkt::zaprezentuj()
{
printf("Pierwsza wspolrzedna: %d
", pierwsza_wspolrzedna);
printf("Druga wspolrzedna: %d
", druga_wspolrzedna);
printf("Trzecia wspolrzedna: %d
", trzecia_wspolrzedna);
return 1;
}
Bylabym bardzo wdzieczna. Prosze, zeby zmienic tylko to, co jest niezbedne.
#include <stdio.h>
#include <string.h>
#include <Windows.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
class Punkt
{
private:
int pierwsza_wspolrzedna;
int druga_wspolrzedna;
int trzecia_wspolrzedna;
public:
int zaprezentuj();
int przesun_pierwsza_wspolrzedna(int nowa_pierwsza);
int przesun_druga_wspolrzedna(int nowa_druga);
int przesun_trzecia_wspolrzedna(int nowa_trzecia);
Punkt();
Punkt(int pierwsza, int druga, int trzecia);
};
void main()
{
Punkt Punkt_A;
Punkt Punkt_B(2, 3, 5);
printf("Punkt A:
");
getch();
Punkt_A.zaprezentuj();
printf("Punkt B:
");
getch();
Punkt_B.zaprezentuj();
getch();
Punkt_A.przesun_pierwsza_wspolrzedna(1);
Punkt_A.przesun_druga_wspolrzedna(1);
Punkt_A.przesun_trzecia_wspolrzedna(1);
printf("Punkt A po przesunieciu o wektor [1, 1, 1]:
");
Punkt_A.zaprezentuj();
getch();
}
Punkt::Punkt()
{
pierwsza_wspolrzedna = 0;
druga_wspolrzedna = 0;
trzecia_wspolrzedna = 0;
}
Punkt::Punkt(int pierwsza, int druga, int trzecia)
{
pierwsza_wspolrzedna = pierwsza;
druga_wspolrzedna = druga;
trzecia_wspolrzedna = trzecia;
}
int Punkt::zaprezentuj()
{
printf("Pierwsza wspolrzedna: %d
", pierwsza_wspolrzedna);
printf("Druga wspolrzedna: %d
", druga_wspolrzedna);
printf("Trzecia wspolrzedna: %d
", trzecia_wspolrzedna);
return 1;
}
Bylabym bardzo wdzieczna. Prosze, zeby zmienic tylko to, co jest niezbedne.
-
- Użytkownik
- Posty: 327
- Rejestracja: 23 mar 2009, o 21:51
- Płeć: Mężczyzna
- Lokalizacja: Świdnica
- Podziękował: 10 razy
- Pomógł: 62 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
1. class zmień a struct
2. int main()
3. zmiana typu zwracanego przez funkcję które nic nie muszą nic zwracać, czyli np void zaprezentuj() i poniższe funkcje (void implikuje brak return w ciele funkcji!)
4. dopisanie brakujących funkcji
2. int main()
3. zmiana typu zwracanego przez funkcję które nic nie muszą nic zwracać, czyli np void zaprezentuj() i poniższe funkcje (void implikuje brak return w ciele funkcji!)
4. dopisanie brakujących funkcji
Kod: Zaznacz cały
void Punkt::przesun_pierwsza_wspolrzedna(int nowa_pierwsza)
{
pierwsza_wspolrzedna = nowa_pierwsza;
}
void Punkt::przesun_druga_wspolrzedna(int nowa_druga)
{
druga_wspolrzedna = nowa_druga;
}
void Punkt::przesun_trzecia_wspolrzedna(int nowa_trzecia)
{
trzecia_wspolrzedna = nowa_trzecia;
}
-
- Użytkownik
- Posty: 124
- Rejestracja: 10 paź 2008, o 22:54
- Płeć: Kobieta
- Podziękował: 46 razy
- Pomógł: 12 razy
Jezyk C, zdefiniowanie klasy - poprawienie bledu
Dziekuje za dotychczasowa pomoc. Jakos udalo sie poprawic program.
Teraz mam prosbe, zeby dopisac do nastepujacego programu odleglosc miedzy punktami A i B. Probuje na rozne sposoby, ale mi nie wychodzi. Prosze o jak najprostsza formule i bazowanie na tym, co juz jest napisane. Dziekuje bardzo!
Teraz mam prosbe, zeby dopisac do nastepujacego programu odleglosc miedzy punktami A i B. Probuje na rozne sposoby, ale mi nie wychodzi. Prosze o jak najprostsza formule i bazowanie na tym, co juz jest napisane. Dziekuje bardzo!
Kod: Zaznacz cały
#include <stdafx.h>
#include <stdio.h>
#include <Windows.h>
#include <conio.h>
#include <time.h>
class Punkt
{
private:
int pierwsza_wspolrzedna;
int druga_wspolrzedna;
int trzecia_wspolrzedna;
public:
int zaprezentuj();
int przesun_pierwsza (int wsp1);
int przesun_druga (int wsp2);
int przesun_trzecia (int wsp3);
Punkt();
Punkt (int pierwsza, int druga, int trzecia);
bool Punkt::operator > (Punkt p)
{
if (pierwsza_wspolrzedna > p.pierwsza_wspolrzedna)
return 1;
else
return 0;
}
bool Punkt::operator < (Punkt p)
{
if (druga_wspolrzedna < p.druga_wspolrzedna)
return 1;
else
return 0;
}
bool Punkt::operator - (Punkt p)
{
if (trzecia_wspolrzedna - p.trzecia_wspolrzedna > 0)
return 1;
else
return 0;
}
};
void main()
{
Punkt Punkt_A;
Punkt Punkt_B(1, 3, 3);
printf ("Punkt A:
");
Punkt_A.zaprezentuj();
getch();
printf ("Punkt B:
");
Punkt_B.zaprezentuj();
getch();
printf("Porownajmy z soba pierwsze wspolrzedne punktow A i B
");
printf("Trwa porownywanie wspolrzednych... ");
Sleep(3000);
printf("3");
Sleep(1000);
printf("2");
Sleep(1000);
printf("1...
");
Sleep(1000);
if(Punkt_A > Punkt_B)
printf("Punkt A ma wieksza pierwsza wspolrzedna
");
else
printf("Punkt B ma wieksza pierwsza wspolrzedna
");
getch();
printf("Porownajmy z soba drugie wspolrzedne punktow A i B
");
printf("Trwa porownywanie wspolrzednych... ");
Sleep(3000);
printf("3");
Sleep(1000);
printf("2");
Sleep(1000);
printf("1...
");
Sleep(1000);
if(Punkt_A < Punkt_B)
printf("Punkt B ma wieksza druga wspolrzedna
");
else
printf("Punkt A ma wieksza druga wspolrzedna
");
getch();
printf("Porownajmy z soba trzecie wspolrzedne punktow A i B
");
printf("Trwa porownywanie wspolrzednych... ");
Sleep(3000);
printf("3");
Sleep(1000);
printf("2");
Sleep(1000);
printf("1...
");
Sleep(1000);
if(Punkt_A - Punkt_B > 0)
printf("Punkt A ma wieksza trzecia wspolrzedna
");
else
printf("Punkt B ma wieksza trzecia wspolrzedna
");
getch();
Punkt_A.przesun_pierwsza(3);
Punkt_A.przesun_druga(5);
Punkt_A.przesun_trzecia(2);
printf ("Przesunmy punkt A o wektor [3, 5, 2]
");
printf ("Trwa przesuwanie punktu A... ");
Sleep(3000);
printf("3");
Sleep(1000);
printf("2");
Sleep(1000);
printf("1...
");
Sleep(1000);
printf("Punkt A po przesunieciu o wektor:
");
Punkt_A.zaprezentuj();
getch();
}
Punkt::Punkt()
{
pierwsza_wspolrzedna = 2;
druga_wspolrzedna = 2;
trzecia_wspolrzedna = 2;
}
Punkt::Punkt(int pierwsza, int druga, int trzecia)
{
pierwsza_wspolrzedna = pierwsza;
druga_wspolrzedna = druga;
trzecia_wspolrzedna = trzecia;
}
int Punkt::zaprezentuj()
{
printf ("pierwsza wspolrzedna: %d
", pierwsza_wspolrzedna);
printf ("druga wspolrzedna: %d
", druga_wspolrzedna);
printf ("trzecia wspolrzedna: %d
", trzecia_wspolrzedna);
return 1;
}
int Punkt::przesun_pierwsza(int wsp1)
{
pierwsza_wspolrzedna = pierwsza_wspolrzedna + wsp1;
return 1;
}
int Punkt::przesun_druga(int wsp2)
{
druga_wspolrzedna = druga_wspolrzedna + wsp2;
return 1;
}
int Punkt::przesun_trzecia(int wsp3)
{
trzecia_wspolrzedna = trzecia_wspolrzedna + wsp3;
return 1;
}