Ocena wątku:
- 0 Głosów - 0 Średnio
- 1
- 2
- 3
- 4
- 5
|
[c++] tablica powiększająca się w razie potrzeby
|
| Autor |
Wiadomość |
waldi11
Użytkownik
Liczba postów: 28
Dołączył: 01-03-2009
Reputacja: 0
|
[c++] tablica powiększająca się w razie potrzeby
Hej, w poleceniu pewnego zadania mam podane:
Cytat: ...program który wczytuje znaki z klawiatury i zapisuje w dynamicznej tablicy (której rozmiar jest modyfikowany wg potrzeb (np. zwiększany dwukrotnie po przekroczeniu pojemności, rozmiar początkowy 5), nie zapisując w niej znaków nowej linii....
jak stworzyć taką dynamiczną tablicę o początkowym rozmiarze 5?
Przeszukiwałem Internet ale niestety nie wyłuskałem ze znalezionych przykładów odpowiednich rzeczy...
|
|
| 08.01.2011 20:37:47 |
|
andrzej3393
Użytkownik
Liczba postów: 27
Dołączył: 10-06-2009
Reputacja: 0
|
RE: [c++] tablica powiększająca się w razie potrzeby
vector
/home/andrzej3393
(Ten post był ostatnio modyfikowany: 08.01.2011 20:48:24 przez andrzej3393.)
|
|
| 08.01.2011 20:48:08 |
|
waldi11
Użytkownik
Liczba postów: 28
Dołączył: 01-03-2009
Reputacja: 0
|
RE: [c++] tablica powiększająca się w razie potrzeby
(08.01.2011 20:48:08)andrzej3393 napisał(a): vector
Może jakiś konkret do tego zadania? Oszczędzisz mi może godziny szukania i kombinowania
|
|
| 08.01.2011 20:53:06 |
|
andrzej3393
Użytkownik
Liczba postów: 27
Dołączył: 10-06-2009
Reputacja: 0
|
|
| 08.01.2011 20:58:23 |
|
Enlik
„techniczny”
      
Liczba postów: 1 043
Dołączył: 12-12-2008
Reputacja: 26
|
RE: [c++] tablica powiększająca się w razie potrzeby
Tylko że on to musi chyba zrobić ręcznie.
Pewnie coś takiego, ogólnie:
rozmiar=5
...
wczytaj znak
wczytanych_elementow++
jeśli wczytanych_elementow >= rozmiar: (np. wczytano 5, a tablica ma rozmiar tylko 5, więc się nie zmieści)
- rozmiar=2*rozmiar
- utworz nowa tablice o rozmiarze rozmiar
- przekopiuj element po elemencie ze starej tablicy na nową
- usuń starą tablicę
dopisz wczytany znak do tablicy
(Ten post był ostatnio modyfikowany: 08.01.2011 21:12:48 przez Enlik.)
|
|
| 08.01.2011 21:11:04 |
|
Itoto
Użytkownik
Liczba postów: 1
Dołączył: 26-07-2010
Reputacja: 0
|
RE: [c++] tablica powiększająca się w razie potrzeby
|
|
| 08.01.2011 21:23:18 |
|
waldi11
Użytkownik
Liczba postów: 28
Dołączył: 01-03-2009
Reputacja: 0
|
RE: [c++] tablica powiększająca się w razie potrzeby
Pełna treść zadania:
Cytat: Napisz program który wczytuje znaki z klawiatury i zapisuje w dynamicznej tablicy (której rozmiar jest modyfikowany wg potrzeb (np. zwiększany dwukrotnie po przekroczeniu pojemności, rozmiar początkowy 5), nie zapisując w niej znaków nowej linii. Koniec wczytywania jest sygnalizowany kropką. Po zakooczeniu wczytywania program wypisuje wczytany napis.
Napisałem coś takiego: ale nie do końca działa, tzn nie wypisuje wszystkiego , czasem nic nie wypisze...
Kod:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector <string> tab(10);
cout<<"Podaj litery, ktopka zakonczy wczytywanie"<<endl;
int i=0;
string litera;
string slowo;
do
{ i++;
cin>>litera;
tab.push_back(litera);
slowo=slowo+tab[i];
}
while(litera!=".");
cout<<slowo;
}
//kod jest w [code]!
(Ten post był ostatnio modyfikowany: 28.04.2011 15:14:17 przez Kwpolska.)
|
|
| 08.01.2011 21:34:13 |
|
Bogu
Użytkownik
Liczba postów: 1
Dołączył: 28-04-2011
Reputacja: 0
|
RE: [c++] tablica powiększająca się w razie potrzeby
|
|
| 28.04.2011 08:31:57 |
|
blane
RRrrrr
Liczba postów: 49
Dołączył: 13-12-2008
Reputacja: 0
|
RE: [c++] tablica powiększająca się w razie potrzeby
Jeśli chodzi o C to tutaj masz przykład, który robi prawie dokładnie to o co ci chodzi: http://pl.wikibooks.org/wiki/C/malloc
To ostatni przykład kodu na tej stronie.
Z tym, że tutaj masz przykład dla tablicy floatów. W twoim przypadku float* zmień na char*. Reszta jest praktycznie taka sama. Najpierw alokujesz początkowy rozmiar malloc'em, a potem w razie potrzeby realokujesz 2x większą pamięć funkcją realloc.
Jeśli chodzi o c++ i masz zrobić to od podstaw to po prostu przejrzyj jak to jest zrobione w bibliotekach <vector> i/lub <vector.h>, bo to chyba jeden z lepszych i prostszych sposobów na zrobienie tego.
Proud Arch User
Miecze świetlne
|
|
| 08.05.2011 12:42:33 |
|
Użytkownicy przeglądający ten wątek: 2 gości