Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] Wypełnienie tablicy

kadu 31 Mar 2010 13:50 7729 15
  • #1 31 Mar 2010 13:50
    kadu
    Poziom 10  

    W klasie w sekcji private mam:

    Code:
    unsigned int tablica[10];

    Jak tą tablicę wypełnić poniższymi liczbami?
    Jak dam przy konstruktorze pomiędzy nawiasami klamrowymi {} to:
    Code:
    tablica[10]={6, 5, 5, 4, 4, 3, 3, 2, 2, 1};

    to wyświetla błąd. Czy tylko jedynym sposobem jest 10 linijek tablica[0]=6 itd. czy jednak można jakoś efektywniej zapisac dane do tablicy???

    0 15
  • #2 31 Mar 2010 14:14
    arnoldziq
    Moderator Programowanie

    Możesz zrobić tylko coś takiego, w trakcie deklaracji :

    Code:
    unsigned tablica[10] = {6, 5, 5, 4, 4, 3, 3, 2, 2, 1};

    Lub re-deklarować tablicę.
    Code:
    #include <stdio.h>
    
    #include <stdlib.h>
    unsigned int tablica[10] ;

    main ()
     {
      printf ("tablica %x \n",tablica);
      unsigned tablica[10] = {6, 5, 5, 4, 4, 3, 3, 2, 2, 1};
      printf ("tablica %x \n",tablica);
      printf("tablica[5] = %d \n",tablica[5]);
      printf("tablica[2] = %d \n",tablica[2]);
      printf("tablica[8] = %d \n",tablica[8]);
     system("pause");
     return 0;
    }

    0
  • #4 31 Mar 2010 14:36
    kadu
    Poziom 10  

    korrus666 napisał:
    Dziwisz się że masz błąd jak chcesz do 13 elementu tablicy wpisać 10 liczb.
    Code:
    tablica[]={6, 5, 5, 4, 4, 3, 3, 2, 2, 1};

    Tak zadziała.

    Nie o to chodzi, ja zawsze zmieniam nazwy zmiennych i różne rzeczy z moich projektów jak o coś pytam. Tutaj zapomniałem zmienić 13 na 10:) Czyli jednym słowem tylko pozostaje tablica[0]=... itd. Nie da się w klamrze. Redeklaracja to nie bo szkoda pamięci.:)

    0
  • #5 31 Mar 2010 14:43
    arnoldziq
    Moderator Programowanie

    Jak ci szkoda pamięci, to nie deklaruj całej tablicy, tylko jej wskaźnik. I alokuj ją dynamicznie.

    0
  • #7 01 Kwi 2010 00:47
    kadu
    Poziom 10  

    korrus666 dzieciaku co ty za głupoty gadasz, może z Javą ci sie myli.

    0
  • #8 01 Kwi 2010 09:58
    korrus666
    Poziom 40  

    Nie pisz do mnie dzieciaku bo sądząc po twojej wiedzy nie masz do tego prawa. Napisałem to co opisuję w C++ skompilowałem i sprawdziłem. Najwyraźniej sam nie wiesz co piszesz.
    Przy deklaracji zmiennej piszesz w nawiasie kwadratowym liczbę oznaczającą rozmiar tablicy nie mającą nic wspólnego z jej nazwą. Jak chcesz zapisać wartości do całej tablicy to w nawiasie nie możesz podać liczby bo podanie jej oznacza konkretny element w tej tablicy. Może więc sprawdź to co napisałem a dopiero potem się wypowiedz.

    0
  • #9 01 Kwi 2010 10:25
    arnoldziq
    Moderator Programowanie

    Drodzy koledzy.
    Proszę zaprzestać kłótni!

    korrus666 napisał:
    Code:
    tablica[]={6, 5, 5, 4, 4, 3, 3, 2, 2, 1};

    Tak zadziała.

    W następnym poście kolega napisał:
    korrus666 napisał:
    [...]Przy deklaracji zmiennej [...]

    I ta informacja, jest tutaj, wg. mnie, kluczowa.
    Nie jestem specjalistą od C++, i zawsze wydawało mi się, że tabelę można zainicjować wartościami, przy użyciu {}, tylko przy deklaracji. Jeżeli się mylę, to proszę mnie poprawić.
    Podążając za pierwszą wypowiedzią kolego korrus666, napisałem coś takiego. Ale taki program nie daje się skompilować pod DEV-C++.
    Code:
    main ()
    
     {
     unsigned int tablica[3] ;
     tablica[] = {0,3,4};
    }

    Może koledzy, specjaliści od C się wypowiedzą. Tylko proszę, bez dalszych kłótni i obrażania się na siebie.

    0
  • #11 05 Kwi 2010 12:31
    oskarzet
    Poziom 9  

    arnoldziq:

    Code:
    main ()
    
     {
     unsigned int tablica[3] ;
     tablica[] = {0,3,4};
    }

    Tablica może zostać zainicjalizowana tylko tak:
    Code:
    main ()
    
     {
     unsigned int tablica[]  = {0,3,4};
     // tablica[] = {0,3,4}; - błąd!
    }

    0
  • #12 05 Kwi 2010 12:35
    arnoldziq
    Moderator Programowanie

    Drogi kolego oskarzet.
    Proszę przeczytać mój post dokładnie. Napisałem wyraźnie :

    arnoldziq napisał:
    Podążając za pierwszą wypowiedzią kolego korrus666, napisałem coś takiego. Ale taki program nie daje się skompilować pod DEV-C++.

    Oraz dużo wcześniej :
    arnoldziq napisał:
    Możesz zrobić tylko coś takiego, w trakcie deklaracji :
    Code:
    unsigned tablica[10] = {6, 5, 5, 4, 4, 3, 3, 2, 2, 1};


    Proszę czytać wszystkie posty, a nie wycinać jakieś kody i dodawać swoje komentarze, które nie wnoszą nic nowego do dyskusji.

    0
  • #13 05 Kwi 2010 12:56
    oskarzet
    Poziom 9  

    arnoldziq napisał:
    Drogi kolego oskarzet.
    Proszę przeczytać mój post dokładnie. Napisałem wyraźnie :
    arnoldziq napisał:
    Podążając za pierwszą wypowiedzią kolego korrus666, napisałem coś takiego. Ale taki program nie daje się skompilować pod DEV-C++.

    Oraz dużo wcześniej :
    arnoldziq napisał:
    Możesz zrobić tylko coś takiego, w trakcie deklaracji :
    Code:
    unsigned tablica[10] = {6, 5, 5, 4, 4, 3, 3, 2, 2, 1};


    Proszę czytać wszystkie posty, a nie wycinać jakieś kody i dodawać swoje komentarze, które nie wnoszą nic nowego do dyskusji.

    Drogi kolego arnoldzq.
    Twój nick pojawił się w moim poście tylko dlatego, że byłeś autorem kodu, który zacytowałem. Moja uwaga odnosiła się do postu autorstwa korrus666, który twierdzi, że g++ kompiluje taki zapis.

    0
  • #14 05 Kwi 2010 13:01
    arnoldziq
    Moderator Programowanie

    Z spornego postu, w żaden sposób, to nie wynika.
    Poza tym kod był opatrzony komentarzem, który pozwolił sobie kolega pominąć.
    Wycięcie samego kodu z mojej wypowiedzi, kompletnie przeinacza formę oraz treść mojej wypowiedzi.
    Nie życzę sobie cytowanie mnie w takiej formie.

    0
  • #15 06 Kwi 2010 23:04
    VanThor
    Poziom 19  

    korrus666 napisał:
    A u mnie pod g++ się kompiluje bez problemu i działa prawidłowo.

    Interesujące, ponieważ aktualny standard języka tego nie umożliwia. A co do nadchodzącego c++0x to g++ 4.4 z flagą -std=c++0x lub -std=gnu++0x nie pozwala skompilować takiego fragmentu:
    Code:

    int t[4];

    t[] = {1, 2, 3, 4};



    Jaka wersja g++, z jakimi przełącznikami i jak dokładnie wygląda cały program?

    0
  • #16 16 Kwi 2010 01:50
    kadu
    Poziom 10  

    dobra nieważne. Po prostu korrus666 używa jakiegoś mało znanego kompilatora który dopuszcza

    Code:
    unsigned int tablica[3] ; 
    
     tablica[] = {0,3,4};

    Ja i milion innych ludzi w firmach używa Visuala, który tego powyżej nie dopuszcza i problem rozwiązany:)

    0