Forum Informatyka UJ forum Strona Główna Informatyka UJ forum
Rocznik 2005 - czyli najlepsze forum w sieci
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

jak sie w c++ robi ...?

 
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Algorytmy i Struktury Danych
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Pandunia
Gość






PostWysłany: Wto 13:12, 17 Paź 2006    Temat postu: jak sie w c++ robi ...?

[deleted]

Ostatnio zmieniony przez Pandunia dnia Pią 6:26, 10 Lis 2006, w całości zmieniany 1 raz
Powrót do góry
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
wuodi
pijak



Dołączył: 10 Lis 2005
Posty: 140
Przeczytał: 0 tematów


PostWysłany: Wto 13:31, 17 Paź 2006    Temat postu:

2. Rekord to moze byc najprosciej struktura chyba
struct nazwa
{
pole1, pole2, ...;
funkcje skladowe;
}

Struktura moze miec funkcje skladowe, a od klasy rozni sie tym ze skladniki sa domyslnie publiczne, struktura nie ma konstruktorow i destruktorow.

na 5. znalazlem kiedys odpowiedz na wikipedii
4. jesli deklaracja funkcji musi byc przed MAINem a definicja gdzie chcesz
deklaracja to znaczy typ nazwa (argumenty);
a definicja to typ nazwa (argumenty) { instrukcje }
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
urban
pijak



Dołączył: 12 Maj 2006
Posty: 109
Przeczytał: 0 tematów


PostWysłany: Wto 14:12, 17 Paź 2006    Temat postu:

1. typ nazwa[rozmiar] np. int dupa[500] elementy od 0..499
6,7. znaki:
char dupa;
scanf("%c", &dupa);

ciag znakow bez spacji
char* dupa;
scanf("%s", &dupa);

calkowita:
int dupa;
scanf("%d", &dupa);

dwie calkowite oddzielone spacja:
int dupa1;
int dupa2;
scanf("%d %d", &dupa1, &dupa2);

dwie calkowite oddzielone znakiem nowej linii:
int dupa1;
int dupa2;
scanf("%d", &dupa1);
scanf("%d", &dupa2);
nie trzeba wczytywac znaku nowej linii
drugi sposob( nie jestem pewny czy dziala):
int dupa1;
int dupa2;
scanf("%d\n%d", &dupa1, %dupa2);

oczywiscie #include<cstdio> lub #include <stdio.h>

znak konca lini to "\n"

ps
!!!!!!!!!!!!!!!!!
[link widoczny dla zalogowanych]
!!!!!!!!!!!!!!!!!
[link widoczny dla zalogowanych]
!!!!!!!!!!!!!!!!!

5.
cytat z [link widoczny dla zalogowanych]

char Character or small integer. 1byte signed: -128 to 127
unsigned: 0 to 255
short int
(short) Short Integer. 2bytes signed: -32768 to 32767
unsigned: 0 to 65535
int Integer. 4bytes signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295
long int
(long) Long integer. 4bytes signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295
bool Boolean value. It can take one of two values: true or false. 1byte true or false
float Floating point number. 4bytes 3.4e +/- 38 (7 digits)
double Double precision floating point number. 8bytes 1.7e +/- 308 (15 digits)
long double Long double precision floating point number. 8bytes 1.7e +/- 308 (15 digits)
wchar_t Wide character. 2bytes 1 wide character

3.
tworzy sie przez malloc lub new(nie jestem pewien new) zwalnia sie poprzez free(nie jestem pewien).
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
m^2
pijak



Dołączył: 15 Mar 2006
Posty: 62
Przeczytał: 0 tematów

Skąd: Katowice

PostWysłany: Wto 17:18, 17 Paź 2006    Temat postu:

Tworzenie wskażnika: int *a;
W C:
Tworzenie czegoś pod wskażnikiem: a = malloc(size);
Zwalnianie czegoś pod wskażnikiem: free(a);
W C++:
a = new int[lenght];
delete a;
W C++ można używać malloca, ale trzeba dodać rzutowanie. malloc jest zwykle nieznacznie szybszy, mniej sprawdza, nie rzuca wyjątków.
Ważne: nie należy mieszać malloc z delete czy new z free. W MS VC++ 6.0 new wywołuje malloca, a delete - free, g++ 3.4.5 też tak robi i nie ma kłopotu. Ale standard nic o tym nie mówi i jest to absolutnie nieprzenośne.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Stefan
pijak



Dołączył: 22 Lis 2005
Posty: 173
Przeczytał: 0 tematów


PostWysłany: Wto 18:43, 17 Paź 2006    Temat postu: Re: jak sie w c++ robi ...?

Pandunia napisał:
1. tworzenie tablicy

T tablica[ilosc_elementow];
gdzie T jest typem wbudowanym, PODem lub typem definiowanym przez użytkownika z domyślnym konstruktorem.
Pandunia napisał:
2. tworzenie rekordow

struct NazwaTypu
{
T1 pole1;
T2 pole2;
...
TN poleN;
} obiekt1, obiekt2, ..., obiektN;
NazwaTypu jakisInnyObiekt;

Przy czym zazwyczaj w C++ nie tworzy się obiektów przy definicji struktury/klasy, tzn pisze się:
struct NazwaTypu
{
// definicja
};

Pandunia napisał:
3. tworzenie wskaznikow i ich usuwanie

NowyTyp nt;
nt.pole1 = 1;
NowyTyp* nt_wsk = &nt;
nt_wsk->pole1 = 2;

Nie rozumiem o co Ci chodzi w usuwaniu wskaźników... obiekty automatyczne (np takie jak powyżej) usuwane są automatycznie, gdy kończy się zasięg, w którym zostały utworzone.

Jeśli chodzi o dynamiczne tworzenie obiektów, to:
T* obiekt = new T;
T* tablica = new T[ilosc_obiektow];

delete obiekt;
delete[] tablica;

Pandunia napisał:
4. jak zadeklaropwac procedure/funkcje a pozniej napisac jej cialo (takie cos co dziala jak forward w pascalu)

double funkcja(int x); // deklaracja
double funkcja(int x) // deklaracja z definicją
{
return x*3.14;
}

W C++ deklaracje mogą występować kilka razy, definicja tylko raz. Żeby móc wywołać funkcję musi być widoczna jej deklaracja.

Pandunia napisał:
5. jakie sa tutaj zakresy typow liczbowych

Standard C++ nie określa wielkości typów wbudowanych, jedynie minimalne rozmiary oraz relacje między rozmiarami typów, np że typ int musi być reprezentowany przynajmniej przez 16 bitów i musi być nie mniejszy niż typ short. Jeśli chodzi o Virgo, to zdaje się, że int jest 32 bitowy, long long 64 bitowy.

Cytat:

ciag znakow bez spacji
char* dupa;
scanf("%s", &dupa);

Błąd. Raczej: scanf("%s", dupa);
Przy czym ten wskaźnik powinien na coś pokazywać... Lepiej zrobić tak:
const int max_rozmiar = 100;
char napis[max_rozmiar];
scanf("%s", &napis[0]);
lub równoważnie
scanf("%s", napis);
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Algorytmy i Struktury Danych Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin