Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zmienne- problemy. Jestem początkujący

Ostatnio zmodyfikowano 2010-11-06 13:53
Autor Wiadomość
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)
P-23585
ison
» 2010-11-05 22:31:37
1.
C/C++
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    const char F[] = "**"; //char to jeden znak, aby przechowywać ciąg znaków musisz zadeklarować tablicę charów
    const char GODZ[] = "godz"; //ciąg znaków powinien być zapisany w cudzysłowach (jak wyżej)
    const char SPACJA = ' '; //pojedynczy znak musi być zapisany w apostrofach
    const int PIETNASCIE = 15; //w przypadku przypisania liczby nie używa się ani apostrofów ani cudzysłowiu
   
    cout << F;
    cout << GODZ;
    cout << SPACJA;
    cout << PIETNASCIE;
   
    getch();
    return 0;
}

chociaż da się prościej...
C/C++
#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.
C/C++
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    int zmienna; //zadaklarowanie zmiennej
    zmienna = 6; //przypisanie jej wartosci 6
    cout << "Zmienna wynosi: " << zmienna << endl;
    zmienna = 10; //przypisanie jej wartosci 10 (stara wartosc zostanie nadpisana)
    cout << "Zmienna wynosi: " << zmienna << endl;
    zmienna = zmienna + 30; //przypisanie jej starej wartosci plus 30
    cout << "Zmienna wynosi: " << zmienna << endl;
    zmienna++; //inkrementacja czyli powiekszenie o jeden
    cout << "Zmienna wynosi: " << zmienna << endl;
    zmienna += 3; //zapis rownoznaczny z zapisem: zmienna=zmienna+3;
    cout << "Zmienna wynosi: " << zmienna << endl;
   
    getch();
    return 0;
}
P-23586
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 ;)
P-23587
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:
C/C++
#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.
P-23594
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)
C/C++
#define OSOBA "Osoba"
#define MA "ma"
#define LAT "lat"
#define LATA "lata"

w tej linijce:
C/C++
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:
C/C++
cout << WIEK + 15 << ODSTEP << LAT << KROPKA << endl;
P-23596
Elaine
» 2010-11-06 11:16:58
w tej linijce:
C/C++
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ż <<).
P-23597
dmx81
» 2010-11-06 13:53:22
no i mozna zamiast #define uzyc (no chyba, ze koniecznie chcesz pocwiczyc z define)
C/C++
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 :)

P-23602
« 1 »
  Strona 1 z 1