Zadanie z tablicą do sprawdzenia

Odpowiedz Nowy wątek
2014-12-16 22:32
0

Mam takie zadanie:

W tablicy b rozmiaru n wierszy i m kolumn, wszystkie elementy pierwszego wiersza i pierwszej kolumny przyjmują wartość 0, a pozostałe elementy m-tej kolumny przyjmują wartość 20. Wewnętrzne elementy tablicy oblicza się według wzoru:

bi+1,j = 0.5(bi,j-1 + bi,j-1), i = 1,2, .. n - 1 , j = 2,3, ... m -1

Napisać funkcję wyznaczającą wartość tablicy b.

Jak to poprawić aby zamiast b_i było b przy dolnym indeksie i ?

void(B[n][m])
{
    int i,j;
 
    for(i = 0; i < n; i++)
    {
        B[i][0] = 0;
    }
    for(j = 0; j < m; j++)
    {
        B[0][j] = 0;
    }
    for(i = 1; i < n; i++)
    {
        B[i][m] = 20;
    }
 
    for(i = 1; i < n; i++)
    {
        for(j = 2; j < m; j++)
        {
            B[i + 1][j] = 0.5 * (B[i][j + 1] + B[i][j - 1]);
        }
    }
}
edytowany 10x, ostatnio: nowicjusz35, 2014-12-16 23:02
co do drugiego pytania - rozejrzyj się trochę :D - Webowiec 2014-12-16 22:41
Do dolnego indeksu używa się dwóch przecinków, np. b,,i,,; Poza tym przy pisaniu posta masz przyciski, więc używaj ich zamiast zmyślać znaczniki ;P - furious programming 2014-12-16 22:44
@nowicjusz35 - przejdź do pełnej edycji posta i w ten sposób poprawiaj, dlatego że tam masz podgląd posta i nie będziesz musiał w kółko go publikować (i wysyłać mi powiadomień); - furious programming 2014-12-16 23:02

Pozostało 580 znaków

2014-12-16 22:42
0
  1. W C/C++ indeksacja od 0
  2. Poczytaj o funkcjach bo ci się myli z tablicami
  3. Zawsze możesz bezboleśnie zamienić: T[x+1]=f(T[x]) na T[x]=f(T[x-1])

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-16 23:05
0

to ostatnie 2 pętlę są złe ? jak indeksacja ma zaczynać się od zera?

for(i = 1; i < n; i++)
    {
        for(j = 2; j < m; j++)
        {
            B[i + 1][j] = 0.5 * (B[i][j + 1] + B[i][j - 1]);
        }
    } 

Pozostało 580 znaków

2014-12-16 23:17
0

Wygląda na to że musisz zacząć od przeczytania jakiegoś kursu.
Sklejanie kodu na chybił trafił z góry skazane na porażkę.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-16 23:24
0

Czytałem tylko pod c++ i dla mnie te pętlę są dobre. W C nie można tak jak tutaj napisałem w tych dwóch ostatnich pętlach ? W czym ja robię błąd ?

Na początku wyzerowałem 1 kolumna, potem wyzerowałem 1 wiersz. Potem nadałem wartość 20 dla pozostałych elementów m-tej kolumny oprócz dla [0][m] ponieważ już dla tego indeksu nadałem wartość w zerowaniu wiersza.
Potem dla pozostałych elementów tablicy podstawiam wzór z zadania.

Co tu jest źle ?

edytowany 2x, ostatnio: nowicjusz35, 2014-12-16 23:40

Pozostało 580 znaków

2014-12-16 23:38
0

Trzy podstawowych błędy wymieniłem tu: http://4programmers.net/Forum/1092765


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
a na czym polega błąd z indeksacją? - nowicjusz35 2014-12-16 23:41
Już mówiłem, punkt 1 - nie będziesz w stanie zrozumieć większości odpowiedzi dopóki nie przeczytasz o jakichś podstawach. - _13th_Dragon 2014-12-16 23:42
napisałeś W C/C++ indeksacja od 0. To wiem czyli pierwszy element tablicy np.tablica[6] to tablica[0] i nie wiem co to ma mi pomóc. - nowicjusz35 2014-12-16 23:45
No to obejrzyj jeszcze raz tą ostatnią pętle. - _13th_Dragon 2014-12-16 23:50

Pozostało 580 znaków

2014-12-17 00:01
0
for(i = 1; i < n; i++)
    {
        for(j = 2; j < m; j++)
        {
            B[i][j] = 0.5 * (B[i - 1][j + 1] + B[i][j - 1]);
        }
    }

Bo robiłem to na podstawie wzoru, a ma się zaczynać od i = 1, a dla j = 2.
Teraz trochę lepiej ?

Pozostało 580 znaków

2014-12-17 00:03
0

Nie zgadniesz, trzeba myśleć nie zgadywać.
Teraz masz totalną kaszane.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-17 00:20
0

W 1 poście w tej ostatniej podwójnej pętli przepisałem ten wzór, to wzór jest zły ?
Wiersze mają się zaczynać od i = 1 i kolumny od j = 2 i też tak zrobiłem w pętlach.
A środek pętli to wzór z treści zadania.

Pozostało 580 znaków

2014-12-17 00:32
0

Wzór jest dobry, ale w matematyce indeksowanie jest od 1 zaś w C/C++ od 0, więc wzór trzeba przerobić.
Poza tym jeżeli c jest funkcją od b zaś b jest funkcją od a to obliczenia trzeba zacząć od b (nie od c).


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
to będę coś dalej kombinować, a pierwsze trzy pętle są ok ? - nowicjusz35 2014-12-17 00:37

Pozostało 580 znaków

2014-12-17 02:00
0

Nadal nie wiem jak ten wzór mogę inaczej rozpisać ?

To mam przerobić tak aby najpierw wpisywał wartość do elementu [0][0] ? Bo przecież już pierwsza kolumna i pierwszy wiersz oraz m-ta kolumna jest zapełniona. Wnętrze trzeba wypełnić.

edytowany 1x, ostatnio: nowicjusz35, 2014-12-17 02:50

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0