C++; ktoś się orientuje? |
Autor |
Wiadomość |
KowaliK
Mitsumaniak 01339/KMM
Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy Dołączył: 06 Sty 2008 Posty: 990 Skąd: Wrocław
|
Wysłany: 25-04-2012, 22:36
|
|
|
krzychu,
Kod: |
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
String tekst;
cin>>tekst;
String nowy = "";
for (int i=tekst.Lenght(); i>0 ; i--)
nowy+=tekst[i];
system("PAUSE");
return EXIT_SUCCESS;
}
|
String undeclared - o co chodzi? Od czego w ogóle zacząć pisanie programu ze użyciem stringa?
elektryk - string.
EDIT.
Sam sobie odpowiedziałem, ale nie wiedziałem jak go zadeklarować... a wystarczyło zamienić "S" na "s". Dzięki Krzychu! |
Ostatnio zmieniony przez KowaliK 26-04-2012, 17:43, w całości zmieniany 1 raz |
|
|
|
 |
elektryk
Forumowicz
Auto: auto
Kraj/Country: Polska
Pomógł: 33 razy Dołączył: 10 Sie 2008 Posty: 2082 Skąd: z ...
|
Wysłany: 25-04-2012, 23:34
|
|
|
KowaliK napisał/a: | String undeclared - o co chodzi? Od czego w ogóle zacząć pisanie programu ze użyciem stringa?
elektryk - string. | Czy tylko ja mam wrażeni że sam sobie odpowiedziałeś na pytanie? |
|
|
|
 |
krzychu
Mitsumaniak

Auto: Lancer 2.0 Int, Mazda CX-3
Zaproszone osoby: 1
Kraj/Country: Polska
Pomógł: 141 razy Dołączył: 21 Kwi 2008 Posty: 12607 Skąd: Bielsko-Biała
|
Wysłany: 26-04-2012, 07:58
|
|
|
elektryk napisał/a: |
KowaliK napisał/a: |
elektryk - string. | Czy tylko ja mam wrażeni że sam sobie odpowiedziałeś na pytanie? |
Chyba tak.
A tutaj masz poprawnie:
Kod: | cin>>tekst;
string nowy = "";
for (int i=tekst.length()-1; i>=0 ; i--)
nowy+=tekst[i];
cout<<nowy;
system("PAUSE");
return 0; |
I pamiętaj, że cin skończy czytać ciąg znaków po spacji. Więc "Ala ma kota" to odczyta tylko "Ala".
Możesz użyć "getline (cin, tekst);" |
|
|
|
 |
KowaliK
Mitsumaniak 01339/KMM
Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy Dołączył: 06 Sty 2008 Posty: 990 Skąd: Wrocław
|
Wysłany: 17-05-2012, 14:32
|
|
|
Piszę funkcje sprawdzającą prawidłowe BMI z użyciem typu strukturalnego. Wszystko ok, gdyby nie ten typ strukturalny, którego zupełnie nie rozumiem. Nie było mnie akurat na tych zajęciach a z tego co znalazłem na necie jakoś ciężko mi coś zrozumieć/napisać. Napisałem coś takiego:
Kod: | #include <cstdlib>
#include <iostream>
using namespace std;
struct dane
{
float waga;
float wzrost;
};
bool spr (float bmi)
{
if (bmi>18,9 && bmi<25)
return true;
else
return false;
}
int main()
{
float bmi;
cout<<"Podaj wage: "<<endl;
cin>>dane.waga;
cout<<"Podaj wzrost: "<<endl;
cin>>dane.wzrost;
bmi=dane.waga/(dane.wzrost*dane.wzrost);
bool (bmi);
system("PAUSE");
return EXIT_SUCCESS;
}
|
Problem pojawia się przy wczytywaniu składników structa... |
|
|
|
 |
krzychu
Mitsumaniak

Auto: Lancer 2.0 Int, Mazda CX-3
Zaproszone osoby: 1
Kraj/Country: Polska
Pomógł: 141 razy Dołączył: 21 Kwi 2008 Posty: 12607 Skąd: Bielsko-Biała
|
Wysłany: 17-05-2012, 14:41
|
|
|
Struktura to jest typ danych (jak np. int) więc musisz go zadeklarować np: "dane dane_bmi" i Twoje dane będą w dane_bmi.
a z tym " bool (bmi);" to co chciałeś zrobić? |
|
|
|
 |
KowaliK
Mitsumaniak 01339/KMM
Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy Dołączył: 06 Sty 2008 Posty: 990 Skąd: Wrocław
|
Wysłany: 17-05-2012, 15:21
|
|
|
Tej deklaracji nie kumam kompletnie z tego co napisałeś. Tzn. coś świecie ale nie wiem jak to zadeklarować. Bardziej łopatologicznie poproszę.
bool (bmi) - obliczone bmi ma być wrzucone do funkcji, która sprawdza czy jest prawidłowe. Jeśli tak to true, nie - false. |
|
|
|
 |
elektryk
Forumowicz
Auto: auto
Kraj/Country: Polska
Pomógł: 33 razy Dołączył: 10 Sie 2008 Posty: 2082 Skąd: z ...
|
Wysłany: 17-05-2012, 15:26
|
|
|
Jeśli dobrze rozumiem zadanie to funkcja "sprawdź BMI" powinna mieć następującą deklarację
Kod: | bool sprawdz_bmi(struct dane dane_wejsciowe) | lub w wersji bardziej "profesjonalnej" Kod: | bool sprawdz_bmi(struct dane *dane_wejsciowe) | A w main() coś takiego Kod: | struct dane moje_cialo;
bool bmi;
//pobranie danych cout/cin etc
bmi = sprawdz_bmi(moje_cialo); //lub w nawiasie &moje_cialo
if (bmi)
//napis ok
else
//napis zla waga
|
PS ja bym dorobił jeszcze typedef do struktury żeby słowo kluczowe struct się nie plątało w kółko. |
|
|
|
 |
krzychu
Mitsumaniak

Auto: Lancer 2.0 Int, Mazda CX-3
Zaproszone osoby: 1
Kraj/Country: Polska
Pomógł: 141 razy Dołączył: 21 Kwi 2008 Posty: 12607 Skąd: Bielsko-Biała
|
Wysłany: 17-05-2012, 16:58
|
|
|
elektryk - ale po co Ci "struct" przed deklaracja? To tak jakbyś przed każdą deklaracją klasy chciał pisać "class". |
|
|
|
 |
KowaliK
Mitsumaniak 01339/KMM
Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy Dołączył: 06 Sty 2008 Posty: 990 Skąd: Wrocław
|
Wysłany: 17-05-2012, 17:02
|
|
|
Coś takiego? Ale dalej nie działa i wysypuje się przy cin.
Kod: | #include <cstdlib>
#include <iostream>
using namespace std;
struct dane_dbmi
{
float waga;
float wzrost;
};
bool spr_bmi (dane_dbmi);
int main()
{
struct dane_dbmi;
float bmi;
cout<<"Podaj wage: "<<endl;
cin>>dane_dbmi.waga;
cout<<"Podaj wzrost: "<<endl;
cin>>dane_dbmi.wzrost;
bmi=dane.waga/(dane.wzrost*dane.wzrost);
bool (bmi);
system("PAUSE");
return EXIT_SUCCESS;
}
bool spr_bmi (dane_dbmi)
{
if (bmi>18,9 && bmi<25)
cout<<"Waga prawidlowa."<<endl;
else
cout<<"Nadwaga/Niedowaga."<<endl;;
}
|
Typedef nie mogę użyć, ponieważ jeszcze tego nie miałem. |
|
|
|
 |
elektryk
Forumowicz
Auto: auto
Kraj/Country: Polska
Pomógł: 33 razy Dołączył: 10 Sie 2008 Posty: 2082 Skąd: z ...
|
Wysłany: 17-05-2012, 18:35
|
|
|
krzychu napisał/a: | elektryk - ale po co Ci "struct" przed deklaracja? To tak jakbyś przed każdą deklaracją klasy chciał pisać "class". | A sory, takie przyzwyczajenie, za dużo piszę w C
KowaliK napisał/a: | Coś takiego? Ale dalej nie działa i wysypuje się przy cin. | A u mnie nawet nie chce się kompilować, a do wysypywania daleko.
a.cpp: In function 'int main()':
a.cpp:22: error: expected primary-expression before '.' token
a.cpp:24: error: expected primary-expression before '.' token
a.cpp:26: error: 'dane' was not declared in this scope
a.cpp:28: error: conflicting declaration 'bool bmi'
a.cpp:18: error: 'bmi' has a previous declaration as 'float bmi'
a.cpp: In function 'bool spr_bmi(dane_dbmi)':
a.cpp:37: error: 'bmi' was not declared in this scope |
|
|
|
 |
KowaliK
Mitsumaniak 01339/KMM
Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy Dołączył: 06 Sty 2008 Posty: 990 Skąd: Wrocław
|
Wysłany: 17-05-2012, 18:45
|
|
|
Dokładnie, co z tym zrobić? |
|
|
|
 |
krzychu
Mitsumaniak

Auto: Lancer 2.0 Int, Mazda CX-3
Zaproszone osoby: 1
Kraj/Country: Polska
Pomógł: 141 razy Dołączył: 21 Kwi 2008 Posty: 12607 Skąd: Bielsko-Biała
|
Wysłany: 17-05-2012, 18:50
|
|
|
No właśnie nie "struct dane_dbmi;" tylko np. "dane_dbmi moje_dane". To tak jak byś próbował zrobić nowy typ zmiennej. Używaj go to jak zmiennej.
Jak piszesz:
"typ_zmiennej Twoja_zmienna"
to napisz teraz
"Twoje_struktura Twoja_zmienna"
Cytat: | struct dane
{
float waga;
float wzrost;
};
int main()
{
float bmi;
dane moje_dane
cout<<"Podaj wage: "<<endl;
cin>>moje_dane.waga;
cout<<"Podaj wzrost: "<<endl;
cin>>moje_dane.wzrost;
} |
itd. |
Ostatnio zmieniony przez krzychu 17-05-2012, 18:52, w całości zmieniany 2 razy |
|
|
|
 |
elektryk
Forumowicz
Auto: auto
Kraj/Country: Polska
Pomógł: 33 razy Dołączył: 10 Sie 2008 Posty: 2082 Skąd: z ...
|
Wysłany: 17-05-2012, 18:51
|
|
|
KowaliK napisał/a: | Dokładnie, co z tym zrobić? | No cóż, trzeba czytać komunikaty wprost. Kompilator oczekuje wyrażenia przed symbolem kropki, zatem pewnie to coś co jest przed kropką nie jest poprawnym wyrażeniem. Skoro kompilator nie widzi tego wyrażenia, to znaczy że nie jest zadeklarowane albo błędnie zadeklarowane. |
|
|
|
 |
KowaliK
Mitsumaniak 01339/KMM
Auto: JDM's
Kraj/Country: Polska
Pomógł: 6 razy Dołączył: 06 Sty 2008 Posty: 990 Skąd: Wrocław
|
Wysłany: 17-05-2012, 18:57
|
|
|
To, że czegoś oczekuje to wiem... ale niestety nie wiem czego.
OK, Krzychu edytował, teraz już widzę o co chodzi. |
|
|
|
 |
krzychu
Mitsumaniak

Auto: Lancer 2.0 Int, Mazda CX-3
Zaproszone osoby: 1
Kraj/Country: Polska
Pomógł: 141 razy Dołączył: 21 Kwi 2008 Posty: 12607 Skąd: Bielsko-Biała
|
Wysłany: 17-05-2012, 19:05
|
|
|
To Ci podbiję temat. Tam od razu sobie popraw przecinek na kropkę bo w USA (pewnie dlatego tak samo jest w C++) separatorem jest kropka. |
|
|
|
 |
|