Pomoc z zadaniami z pętlami w języku C


(rix98) #1

Cześć,
Mam problem z dwoma zadaniami, to co robię totalnie mi nie wychodzi

  1. Napisz program wskazujący wartość po podaniu n-wyrazu ciągu Fibonacciego.
    a) korzystając z for
    b) korzystając z do…while
  2. Napisz program wyświetlający trójkąt liczb dla 0<n<10:
    1
    22
    333
    4444
    …itd. Po wprowadzeniu wartości spoza zakresu program ma nie konczyć działania aż nie podana zostanie wartość z danego zakresu.
    Wielkie dzięki za wszelkie wyjaśnienia. :slight_smile:

(Razi) #2

Pokaż co robisz, to powiemy co jest źle i jak poprawić.

Nie odrobimy twojego zadania.


(cheshireCat) #3

Ale tak serio to to 2 to jest łatwe całkiem:) w zasadzie używasz tylko jednej zmiennej żeby to zrobić:) Wklej co tam spłodziłeś do tej pory to naprowadzimy na dobre rozwiązanie.


(Johny) #4

Kody do ciągu fibbonaciego znajdziesz w necie,jest to taki ciąg,którego następny wyraz jest sumą dwóch poprzednich
fib[0]=1
fib[1]=1
fib[n]=fib[n-1]+fib[n]
w pętli for musisz zacząć od 2
fib[n]=fib[n-1]+fib[n-2]
1 1 2 3 5 8 13 21,itd


(Pablo_Wawa) #5

Serio? Według mnie tam muszą być dwie pętle, więc i dwie zmienne użyte.


(rix98) #6

Co do zad.2 zacząłem tak:
#include <stdio.h>

int main()
{
int k, w;
printf("Podaj cyfre\n");
scanf("%d", &k);

for (k=1; k<10; k++){printf("\n");
    for (w=1; k>=w; w++){printf("%d", w);}
}
}

Niestety odlicza on kolejne cyfry a nie wiem jak zrobić, aby pokazywał w jednym wierszu tylko te same cyfry.
Co do zad1.
int a = 0, b = 1, c, i;
scanf("%d", &n);
if( n == 0){printf(“0”);}

  for (i = 2; i <= n; i++)
  {
     c = a + b;
     a = b;
     b = c;
  }

Tutaj problemem jest chyba moje myślenie, wiem na czym polega ciąg Fibonacciego, lecz nie wiem totalnie jak przedstawić to z funkcją for :confused:

Oczywiście nie liczę o gotowce tylko o wyjaśnienie :slight_smile: W internecie są gotowce, ale one nie dadzą mi zrozumienia problematyki. Wiem, że dla Wielu z Was te zadania będą dosyć proste, ale ja męczę się po nocach, a chciałbym je rozumieć jak i sam język. Dlatego liczę na Was i z góry za wszelką pomoc dziękuję. :slight_smile:


(Razi) #7

co do zad.2: po prostu wypisuj wartość zmiennej k, zamiast w. Popraw formatowanie i wcięcia, bo niewygodnie się to czyta, a dobrze sformatowany i wcięty kod łatwiej się rozumie :slight_smile:

zad.1: for to nie funkcja, tylko pętla.
Jak dla mnie to ten kod jest OK, tylko wyzeruj c na początku, wynik będziesz miał w c po tej pętli.

Rada: nie bój się wsadzać printf gdzie popadnie żeby podejrzeć co się w kodzie w ogóle dzieje (skoro już nie uczą debugować na zajęciach, niech przynajmniej o printfach mówią).


(cheshireCat) #8

Jednej istotnej. 2 jest tak sobie żeby wewnętrzna pętla latała.


(Johny) #9

Znajdż o funkcji printf().Na końcu pierwszej pętli trzeba mu dać printf ("\n");.To jest kod przechodzenia do drugiej linii.Poczytaj o rekurencji,bo ciąg fibbonaciego jest typowo rekurencyjny.


(rix98) #10

Temat do zamknięcia, dziś po zaliczeniu dostałem piękne 100% dzięki wam. Jeszcze raz dziękuję :smiley: