To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
Forum Oficjalnego Klubu Mitsubishi - MitsuManiaki

Komputery, RTV, AGD, Komorki - C++; ktoś się orientuje?

KowaliK - 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? :oops:


elektryk - string.



EDIT.

Sam sobie odpowiedziałem, ale nie wiedziałem jak go zadeklarować... a wystarczyło zamienić "S" na "s". :lol: Dzięki Krzychu! :)

elektryk - 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? :oops:

elektryk - string.
Czy tylko ja mam wrażeni że sam sobie odpowiedziałeś na pytanie?
krzychu - 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 - 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 - 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 - 17-05-2012, 15:21

Tej deklaracji nie kumam kompletnie z tego co napisałeś. :wink: 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 - 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 - 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 - 17-05-2012, 17:02

Coś takiego? Ale dalej nie działa i wysypuje się przy cin. :wink:

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 - 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. :wink:
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 - 17-05-2012, 18:45

Dokładnie, co z tym zrobić?
krzychu - 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.

elektryk - 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 - 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. :wink:

krzychu - 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.


Powered by phpBB modified by Przemo © 2003 phpBB Group