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++ funkcja liczaca rozmiar tablicy

Konwektor 25 Kwi 2010 00:15 3611 11
  • #1 25 Kwi 2010 00:15
    Konwektor
    Poziom 11  

    Program ma polegać na pobraniu od użytkownika rozmiaru tablicy, następnie wielkości przedziału, i liczby jaką ten przedział wypełnić;
    - następny przedział, i następne wypełnienie,
    aż do suma_przedziałów=wielkość tablicy.
    Napisałem pobranie wielkości tablicy, pobranie przedziału, oraz wypełnienia. Proszę o pomoc, jak zrobić, żeby po pobraniu przedziału i wypełnienia program pytał o kolejny przedział i kolejne wypełnienie aż do zrównania sumy przedziałów z wielkością tablicy.


    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0 11
  • #2 25 Kwi 2010 07:46
    Dżyszla
    Poziom 42  

    JA rozumiem, że Tobie chodzi o podanie prawego krańca przedziału, a przy kolejnym przebiegu następny przedział będzie zaczynał się od końca ostatniego + 1 do podanej wartości, czy tak?

    Ujmij całe pytanie w pętle do..while, warunkiem końcowym zrównanie przedziału z wielkością. Przed pętlą zainicjuj początek_przedzialu wartością 0, po wykonaniu wypełnienia przepisz wartość zmiennej przedział do poczatek_przedzialu. Całość zabezpiecz przed podaniem zbyt dużej lub zbyt małej liczby, bo będzie książkowy Access Violation.

    0
  • #3 25 Kwi 2010 11:01
    Konwektor
    Poziom 11  

    Zrobiłem coś takiego, ale za bardzo nie chce mi to działać tak jak napisałem wczesniej:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #5 25 Kwi 2010 12:40
    Konwektor
    Poziom 11  

    Czy tak jest wszystko w porządku bo działa prawidłowo (chyba :-)

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #7 25 Kwi 2010 14:14
    Konwektor
    Poziom 11  

    Jak teraz do tego dopisać wyświetlanie ile jest przedziałów. Coś w stylu od 1 do 10 elementu przedział nr 1 o wartości x, od 11 do .. przedział nr 2 o wartości y. itd?
    Tak, żeby można było edytować wartości np 3 przedziału.

    0
  • #8 25 Kwi 2010 14:38
    Dżyszla
    Poziom 42  

    Zasadniczo najlepiej byłoby albo zapisywać przy każdym rekordzie numer przedziału, albo stworzyć listę dynamiczną z numerami przedziałów. Jednak można się obejść i bez tego, choć w dość zachłanny sposób: wystarczy zliczyć ilość różnych sąsiadujących elementów skanując całą tablicę. Można w ten sposób wydobyć ilość zmian (ergo: przedziałów) oraz miejsce ich wystąpienia. Czyli przechodzi cała tablicę badając każdy element z jej poprzednikiem, i jeśli są różne - odnotować jako kolejny przedział)

    0
  • #9 25 Kwi 2010 19:24
    Konwektor
    Poziom 11  

    Dla mnie to dość skomplikowane (początkujący w końcu), mógłbyś jakoś przystępniej to wytłumaczyć ew. na przykładzie?

    0
  • #10 25 Kwi 2010 20:35
    Dżyszla
    Poziom 42  

    0. ustawiam ilość przedziałów na 1 (p=1) i wyświetlam wartość pozycji tablicy spod indeksu 0
    1. ustawiam się na pozycji o indeksie 1 (i=1)
    2. sprawdzam, czy pozycja o indeksie i jest różna od pozycji o indeksie i-1
    2a. jeśli tak, zwiększam: p++ i wyświetlam wartość pozycji tablicy spod indeksu [i]
    3. zwiększam wartość indeksu: i++
    3. sprawdzam czy osiągnięto koniec tablicy (i=rozmiar)
    3a. jeśli nie, wróć do 2
    3b. jeśli tak - wyświetlam ilość przedziałów (p)

    0
  • #11 26 Kwi 2010 20:52
    Konwektor
    Poziom 11  

    Hmm, to ta bardziej zachłanna metoda. Jak będę miał chwilkę czasu, posiedzę nad tym (w tygodniu ciężko z braku czasu).
    Czy można w C++ utworzyć zmienną wczytującą 2 parametry (coś jak fkcja) a1(przedzial,wart_elem). Później wyświetlić te 2 parametry? Następnie pobranie z kolejnej pętli a2(przedzial,wart_elem) itd.

    0
  • #12 17 Mar 2011 16:21
    Konwektor
    Poziom 11  

    Stary temat, czas go zakończyć.
    Więcej dowiedziałem się gdzie indziej znajdując konkretne odpowiedzi na analogiczne pytania, niż tutaj zadając pytania.
    Muszę niestety przyznać, że elektroda rozrosła się (pozytywnie poniekąd) na tyle, że użytkownicy bardziej starają się nabić jak najwięcej postów-pktów, niż konkretnie pomóc.
    Admini upominają "szukaj", a nawet odpowiednio zapytane wyszukiwanie powoduje studiowanie setek postów, mniej, lub więcej konkretnych
    ( po dogłębnym zrozumieniu ich można zrobić inżyniera bez uczęszczania na wykłady) .
    Admini powinni "kosić" odpowiedzi nie na temat, upominać użytkowników odpowiadających ogólnikowo
    Piszę w początkujących, bo początkujący nie wie, nie rozumie nawet o co pyta czasami, oczekuje konkretnej pomocy, odpowiedzi, a nie ogólników (nie mylić z gotowcem), nawet jeśli pyta o bzdury, czy zadaje idiotyczne pytanie
    Temat zamykam.

    0