Odpowiedz 
 
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 Offline
Użytkownik

Liczba postów: 28
Dołączył: 01-03-2009
Reputacja: 0
Post: #1
[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
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
andrzej3393 Offline
Użytkownik

Liczba postów: 27
Dołączył: 10-06-2009
Reputacja: 0
Post: #2
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
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
waldi11 Offline
Użytkownik

Liczba postów: 28
Dołączył: 01-03-2009
Reputacja: 0
Post: #3
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 kombinowaniaSmile
08.01.2011 20:53:06
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
andrzej3393 Offline
Użytkownik

Liczba postów: 27
Dołączył: 10-06-2009
Reputacja: 0
Post: #4
RE: [c++] tablica powiększająca się w razie potrzeby

/home/andrzej3393
08.01.2011 20:58:23
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Enlik Offline
„techniczny”
*******

Liczba postów: 1 043
Dołączył: 12-12-2008
Reputacja: 26
Post: #5
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

[Obrazek: zeDGS.png]
Please don't steal my focus!
| git
(Ten post był ostatnio modyfikowany: 08.01.2011 21:12:48 przez Enlik.)
08.01.2011 21:11:04
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Itoto Offline
Użytkownik

Liczba postów: 1
Dołączył: 26-07-2010
Reputacja: 0
Post: #6
RE: [c++] tablica powiększająca się w razie potrzeby
08.01.2011 21:23:18
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
waldi11 Offline
Użytkownik

Liczba postów: 28
Dołączył: 01-03-2009
Reputacja: 0
Post: #7
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
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Enlik Offline
„techniczny”
*******

Liczba postów: 1 043
Dołączył: 12-12-2008
Reputacja: 26
Post: #8
RE: [c++] tablica powiększająca się w razie potrzeby
1. Ustawiasz i na 0, potem w pętli najpierw inkrementujesz, potem używasz jako indeksu tablicy? Źle, bo wtedy zaczynasz od tab[1]. Tablice są indeksowane od 0. Inkrementacja powinna być w tym przypadku poniżej.
2. Zamiast tab[i] można użyć zmiennej litera. Jeśli chcesz zrobić tak jak tutaj, użyj poprawnej metody na odczytywanie ostatniego elementu - zobacz podane Ci wyżej odsyłacze.

[Obrazek: zeDGS.png]
Please don't steal my focus!
| git
(Ten post był ostatnio modyfikowany: 08.01.2011 22:32:18 przez Enlik.)
08.01.2011 22:31:48
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Bogu Offline
Użytkownik

Liczba postów: 1
Dołączył: 28-04-2011
Reputacja: 0
Post: #9
RE: [c++] tablica powiększająca się w razie potrzeby
Iteratory też są dobrym rozwiązaniem.
http://pl.wikibooks.org/wiki/C%2B%2B/Iteratory
28.04.2011 08:31:57
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
blane Offline
RRrrrr

Liczba postów: 49
Dołączył: 13-12-2008
Reputacja: 0
Post: #10
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 Big Grin
08.05.2011 12:42:33
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  nie łączą się dwie tablice akasei 2 102 19.04.2012 09:18:12
Ostatni post: akasei
  Bash wyswietlanie nr lini w ktorym znajduje sie dany wyraz?? rryk 6 2 281 31.10.2011 12:56:18
Ostatni post: wrosiak
  [BASH] Usuwanie linijek kończących się na # rryk 3 1 688 11.08.2010 22:39:15
Ostatni post: sterownik77
  [SOLVED]BASH zamiana linijki zaczynającej się podanym wyrazem rryk 8 2 150 30.03.2010 20:25:56
Ostatni post: rryk
  stringowa tablica dynamiczna :P mlodir 7 1 664 23.03.2009 23:45:48
Ostatni post: Enlik
  Uczę się C++ Domanoid 6 1 696 27.02.2009 09:12:46
Ostatni post: Zoja

Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości

Kontakt | Linux360.pl - forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS