Owex Temat założony przez niniejszego użytkownika |
Zmienne- problemy. Jestem początkujący » 2010-11-05 22:08:04 Witam. Jestem początkujący. Przygodę z C++ zacząłem wczoraj i aktualnie uczę się o zmiennych. Tutaj pojawiają się problemy: 1. Próbowałem napisać program, który (za pomocą zmiennych) wyświetli mi napis : **godz 15 . Wpisałem taki kod:
#include <iostream> #include <conio.h>
int main() { using namespace std; const char F ='**'; const char GODZ = 'godz'; const char SPACJA = ' '; const int PIETNASCIE='15'; cout << F; "\n"; cout << GODZ; "\n"; cout << SPACJA; "\n"; cout << PIETNASCIE; getch (); return (0); }
Kiedy uruchamiam program, zamiast zamierzonego napisu pojawia się *z 12597 . Dlaczego i jak to naprawić? 2.Kiedy dać int, kiedy float itd. Jakoś nie za bardzo rozumiem... 3. Do czego wgl. służą te zmienne? Przeczytałem że po to, żeby zmienić jakąś wartość itd. w trakcie trwania programu. Jak zrobić aby ta zmienna zmieniła wartość? 4. Jak zrobić żeby program pokazał zmienną o wartości np. 8.0 (nie chodzi mi o osobne wpisanie wartości 8, następnie przecinka i 0 za pomocą 3zmiennych, ale za pomocą jednej zmiennej) |
|
ison |
» 2010-11-05 22:31:37 1. #include <iostream> #include <conio.h>
using namespace std;
int main() { const char F[] = "**"; const char GODZ[] = "godz"; const char SPACJA = ' '; const int PIETNASCIE = 15; cout << F; cout << GODZ; cout << SPACJA; cout << PIETNASCIE; getch(); return 0; }
chociaż da się prościej... #include <iostream> #include <conio.h>
using namespace std;
int main() { cout << "**godz 15; getch(); return 0; }
2. zależy jakiej zmiennej chcesz użyć w programie. W kursie (na cpp0x) powinno być wszystko opisane. przykładowo w incie możesz przechowywać zmienne całkowite z zakresu -2^31 do 2^31 a w long long'u -2^63 do 2^63. Double, floaty są dla liczb zmiennoprzecinkowych. Char dla pojedynczego znaku (bądź stringa czyli ciągu znaków - tablicy charów) 3. każda zmienna przechowuje jakąś wartość, przykładowo w grach położenie gracza też jest przechowywane w jakiejś zmiennej 4. #include <iostream> #include <conio.h>
using namespace std;
int main() { int zmienna; zmienna = 6; cout << "Zmienna wynosi: " << zmienna << endl; zmienna = 10; cout << "Zmienna wynosi: " << zmienna << endl; zmienna = zmienna + 30; cout << "Zmienna wynosi: " << zmienna << endl; zmienna++; cout << "Zmienna wynosi: " << zmienna << endl; zmienna += 3; cout << "Zmienna wynosi: " << zmienna << endl; getch(); return 0; }
|
|
dmx81 |
» 2010-11-06 00:08:59 a jakby cie przerazal ogrom odpowiedzi :) to w skrocie char moze przechowywac tylko jeden znak, czyli tylko jedna gwiazke * jesli chcesz wyswietlic 2 gwiazdki, to -albo dasz 2 zmienne typu char i je wyswietlisz po kolei (jedna zmienna - jeden znak, oczywiscie moga byc rozne ;)), albo jedna zmienna char i wyswietlisz ja 2 razy pod rzad, albo char[2] (gdzie zawsze nawias [] i liczba w nim oznacza, ze tworzysz tablice (kilka tych zmiennych - poczytasz w kursie :) )
a "\n" jak i endl oznaczaja koniec linii i w cout, jak masz w przykladach wyzej, piszesz jednym ciagiem poprzedzajac znakiem << czyli cout << zmienna_char << endl << "napis (ciag znakow umieszczasz w cudzyslowiu a zmienna nie" << "\n";
a zmienna typu int tez mozesz wyswietlic - a rozni sie ona tym, ze na int'ach(i innych zmiennych "liczbowych" wymienionych przez isona mozesz dokonywac m.in operacji matematycznych, a char i zmienne "tekstowe" sluza glownie do wyswietlania tekstu (czyli mozesz trzymac 123 w char[] a mozesz tez w int, ale jesli bedzie to ciag znakow typu char, nie bedziesz mogl dodawac, poza tym roznia sie zajmowana pamiecia) o wszystkim spokojnie sobie poczytaj w kursie i smialo pytaj :)
mam nadzieje, ze nie napisalem nigdzie nic blednego, bo juz pozno ;) a nie chcialbym wprowadzic w blad - wiec pewnie koledzy poprawia ;) |
|
Owex Temat założony przez niniejszego użytkownika |
» 2010-11-06 08:13:11 Dzięki ;) A co jest błędnego w takim zapisie? (podaję zupełnie inny kod) Miało wyjść coś takiego: Osoba ma: 13 lat. Za 15 lat będzie miała: 28 lat. A 10 lat temu miała: 3 lata. Dałem kod: #include <iostream> #include <conio.h> #define OSOBA Osoba #define MA ma #define LAT lat #define LATA lata int main() { using namespace std; const char ODSTEP = ' '; const char KROPKA = '.'; const char DWUKROPEK = ':'; int WIEK; WIEK = 13; cout << OSOBA << ODSTEP << MA << DWUKROPEK << endl; cout << WIEK << ODSTEP << LAT << KROPKA << endl; cout << "Za 15 lat będzie miała:" << endl; cout << WIEK = WIEK + 15 << ODSTEP << LAT << KROPKA << endl; cout << "A 10 lat temu miała:" << endl; WIEK = WIEK - 15; WIEK = WIEK - 10; cout << WIEK << LATA << KROPKA << endl; getch(); return 0; }
Co jest źle? Program nie uruchamia się, bo wyskakuje błąd przy 15wersie (cout << OSOBA << ODSTEP << MA << DWUKROPEK << endl;) Jak go skomentuję za pomocą // to pojawia się błąd przy każdym następnym wersie w którym użyłem zmiennych. Nie chcę używać komendy cout tylko zmiennych, tak jak jest napisane w przykładzie. |
|
ison |
» 2010-11-06 08:44:04 przy define'ach powinny być cudzysłowy (przecież ma to traktować jako ciąg znaków do wypisania) #define OSOBA "Osoba" #define MA "ma" #define LAT "lat" #define LATA "lata"
w tej linijce: cout << WIEK = WIEK + 15 << ODSTEP << LAT << KROPKA << endl;
nie możesz jednocześnie podstawić nowej wartości pod wiek i jej wypisać możesz to zrobić w ten sposób: cout << WIEK + 15 << ODSTEP << LAT << KROPKA << endl;
|
|
Elaine |
» 2010-11-06 11:16:58 w tej linijce:
cout << WIEK = WIEK + 15 << ODSTEP << LAT << KROPKA << endl;
nie możesz jednocześnie podstawić nowej wartości pod wiek i jej wypisać |
Jakby wokół wyrażenia z przypisaniem był nawias, to można - problemem jest tu tylko priorytet operatorów (= ma niższy niż <<). |
|
dmx81 |
» 2010-11-06 13:53:22 no i mozna zamiast #define uzyc (no chyba, ze koniecznie chcesz pocwiczyc z define) const char tab1[] = { 'a', 'b', 'c' };
- nie musisz w tym przypadku podawac ilosci znakow tablicy, poniewaz automatycznie sobie policzy ile jest znakow - kazdy znak z osobna trzeba umiescic pomiedzy ' ' - jesli natomiast napis umieszczasz nie w tablicy char[], ale bezposrednio w funkcji, wpisujesz go w " tutaj ", tak jak to juz robisz, ale wiadomo, utrwalania nigdy nie za wiele :) |
|
« 1 » |