Proszę o pomoc w napisaniu programu

0

Witam wszystkich. Mam do napisania 2 zadania na zaliczenia i nie wiem jak to napisać. Zaczynam dopiero przygodę z programowaniem i proszę o pomoc w napisaniu bo nie wiem co to będzie ... :/
Oto treść zadań:
1.
Policzyć wyrazy ciągu geometrycznego.
Ciąg geometryczny - co najmniej trójelementowy ciąg liczbowy skończony bądź nieskończony, w którym każdy wyraz począwszy od drugiego, powstaje z przemnożenia poprzedniego przez pewną stałą liczbę różną od zera (q), którą nazywamy ilorazem ciągu. Każdy wyraz ciągu geometrycznego, prócz pierwszego (i dla ciągów skończonych – ostatniego) jest średnią geometryczną wyrazów sąsiednich. Np. ciąg : (1,3,9,27,81,243,...) jest ciągiem geometrycznym o ilorazie q=3. Napisać program wczytujący za pomocą funkcji scanf() q (iloraz) oraz liczbę n (ilość wyrazów ciągu). Następnie wyliczyć i wyświetlić pierwszych n wyrazów ciągu oraz podać ich sumę.
Zmodyfikować program zapisując kolejne wyrazy ciągu do tablicy. Po wygenerowaniu wyświetlić wyrazy ciągu od ostatniego do pierwszego.

Policzyć wyrazy ciągu arytmetycznego.
Ciąg arytmetyczny – to ciąg liczbowy, w którym każdy wyraz można otrzymać dodając wyraz bezpośrednio go poprzedzający oraz ustaloną liczbę r, zwaną różnicą ciągu. Np. ciąg: (1,3,5,7,9, ...) jest ciągiem arytmetycznym (jego różnicą r jest 2). Napisać program wczytujący zza pomocą funkcji scanf() r (różnicę) oraz liczbę n (ilość wyrazów ciągu). Następnie wyliczyć i wyświetlić pierwszych n wyrazów ciągu oraz podać ich sumę.
Zmodyfikować program zapisując kolejne wyrazy ciągu do tablicy. Po wygenerowaniu wyświetlić wyrazy ciągu od ostatniego do pierwszego.

Z góry dziękuje za pomoc!

0

I jak ci pomóc ?
Bo jeśli chodzi o napisanie tych programów nikt za ciebie tego nie zrobi, chyba że za opłatą. Jakkolwiek skąpo by to nie brzmiało, ktoś musi poświęcić jakąś ilość czasu na napisanie tego i zwykłe dziękuje za to raczej nie wystarczy.
Jeżeli chodzi o porady, to może powiedz czego nie wiesz ?

0

Wiem mniej więcej jak to napisać nie wiem jak wykonać to polecenie "Zmodyfikować program zapisując kolejne wyrazy ciągu do tablicy. Po wygenerowaniu wyświetlić wyrazy ciągu od ostatniego do pierwszego."

1

Stwórz tablicę o rozmiarze n
I przypisuj jej kolejne wyrazy ciągu w pętli

 
for(int i=0;i<n;i++)
tab[i] = pow(q,i)*a // q^(n-1) * a malo wydajne ale proste
0

Spróbuje i dam odpowiedź co wyszło z tego. Dziękuje

0

Robię 2 zadanie i jak na razie zatrzymałem się w takiej fazie nie wiem jak usprawnić ten kod ...

#include<stdio.h>
#include<conio.h>
int main()
{
    int a1,n,q;
    printf("Program rozwiazujacy ciąg geometryczny");
    printf("Podaj pierwszy wyraz ciagu: ");
    scanf("%d%d%d",&a1);
    printf("Podaj iloraz ciągu geometrycznego ");
    scanf("%d%d%d",&q);

    if (n==0 && q==0)
       printf("Błędne dane");
    for(int i=0;i<n;i++)
    tab[i] = pow(q,i)*a1;
    
    return 0;

}
 

Ktoś pomoże?

0

Wyrzucić i napisać od nowa poprawnie.

Ciąg geometryczny ma taką własność, że a_{n+1} = a_n \cdot q
A ty w każdym kroku liczysz q do potęgi i...

Nie licząc tego, że masz tam jeszcze z 5 innych błędów związanych z samą składnią, weź przeczytaj jakiś kurs.

0

To jak mam to napisać?

0
  1. Tablica nie jest zadeklarowana.
  2. n nie jest zainicjalizowane przed pierwszym użyciem.
  3. pow wymaga dołączenia odpowiedniego nagłówka.
  4. scanf("%d%d%d",&a1); co to robi według ciebie?
  5. Jak już napisałem wcześniej twoje rozwiązanie nie jest optymalne.
0
  1. A jak mam ją zadeklarować?
  2. Już to robię.
  3. W jaki sposób mam go dołączyć?
  4. Miało prosić o podanie a1
  5. Na razie chce żeby program działał a nie był optymalny :/
1
  1. Nie znasz wielkości tablicy przed rozpoczęciem programu - więc funkcja malloc
  2. n musisz wczytać
  3. nic nie dołączaj - tylko stdio i stdlib
  4. nie, nie miało prosić o podanie a1, tylko ilość wyrazów ciągu i q (więc domyślam się że pierwszy wyraz ciągu to 1)
  5. to dobre podejście w nauce programowania

Do czego Twoim zdaniem idzie pętla for? czym jest n? Nie potrzebujesz w ogóle potęgowania.

0

Wymęczyłem już ostro te zadania i mam problem z ciągiem arytmetycznym. Opracowałem kod i na razie nie wiem co zrobić by program przestał wywalać błąd ... Co robię źle koledzy?


#include <iostream>

using namespace std;

int main(void) {

	cout << "CIAG ARYTMETYCZNY\n\n";

	int a1, r, n;
	long suma = 0;

	cout << "Podaj pierwszy wyraz ciagu (a1): ";
	cin >> a1;
	cout << "Podaj roznice ciagu (r): ";
	cin >> r;
	cout << "Podaj liczbe elementow ciagu (n): ";
	cin >> n;

	cout << "Wyrazy ciagu:\n";
	for (int i = 0; i < n; i++) {
		cout << "a" << i+1 << ": " << a1 + r*i << endl;
		suma = suma + a1 + r*i;
	}
	cout << "Suma czesciowa ciagu: " << suma << endl;

	system("PAUSE");

	return 0;
}
 
1

skoro jednak wczytujesz a1 (nie ma tego w treści zadania) to zapisz sobie jako pierwszy element ciągu od razu np:

 
cout << "Podaj pierwszy wyraz ciagu (a1): ";
cin >> wyraz;

a pętla for powinna wtedy wyglądać tak:

 
cout<<"a1: "<<wyraz<<endl;
for (int i = 1; i < n; i++) {
        wyraz+=r;        
        cout << "a" << i+1 << ": " << wyraz<< endl;
 }
0

Super ! Dziękuje działa :D

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