3 programy w języku C

0

Witam, mam problem z 3 programami. Postaram się to poniżej opisać:

  1. W poniższym programie muszę dodać sumowanie szeregu, jednak wyskakuje mi tablica.
 #include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main () {
 float x,W=0;
 int n;
 printf ("Podaj wartosc x:\n");
 scanf ("%f", &x);
 for (int n=1;n<=10;n++) {
   W+=sqrt(3*n-x);
   if (W>0)
   {
    printf ("Wyrazenie wynosi: %f \n", W);
   }
   else 
   {
    printf ("Bledna wartosc wyrazenia \n");
   }
 }
 system ("PAUSE");
 return 0;
}

2.Napisz program, który tablicuje funkcję y=〖((x+3)(x-2A))〗^(1/5) z krokiem k=0,40 w przedziale <-10,10>. Wartość parametru A wczytaj z klawiatury.
Nie wiem dlaczego w tym programie dla niektórych wartości wyskakuje mi wynik: -1.#IND00

 #include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main () {
float k=0.4,y,x=0,A;
 int n;
 printf ("Podaj wartosc A:\n");
 scanf ("%f", &A);
 for (x=-10;x<10;x=x+k) {
   y=pow((x+3)*(x-2*A),1.00/5.00);
    printf ("Dla x=%0.1f    ", x);
	printf ("Wyrazenie wynosi: %f \n", y);
 }
 system ("PAUSE");
 return 0;
}

3.Dana jest liczba naturalna n i liczby rzeczywiste A i B. Napisać program, który obliczy sumę szeregu: S=∑_(i=1)^n 1/ai , gdzie ai=Ai gdy A jest większe od B oraz ai=i+Bcos(Bi) w przeciwnym wypadku.

Nie do końca wiem jak sobie poradzić z tym programem, poniżej wysyłam to do czego doszedłem.

 #include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main () {
	float S=0,ai,A,B;
	int n;
	printf("Podaj A:\n");
	scanf ("%f", &A);
	printf("Podaj B:\n");
	scanf ("%f", &B);
	printf("Podaj n:\n");
	scanf ("%f", &n);
	if (A>B)
	{
	for (int i=1;i<=n;i++)
	{
		S+=1/(A*i);
		printf("Suma szeregu wynosi: %f", S);
	}
	else if
	for (int i=1;i<=n;i++)
	{
		S+=1/(i+B*cos(b*i));
		printf("Suma szeregu wynosi: %f", S);
	}	
	}
	system ("PAUSE");
	return 0;
}

Z góry dziękuję za pomoc!

0
  1. Nie rozumiem w czym problem

  2. Funkcja pow z biblioteki math przyjmuje jako drugi parametr typ int a Ty podajesz liczbę zmiennoprzecinkową - to jeden z błędów. Zastanów się jak inaczej to obliczyć. Pamietej że x^1/5 to nic innego jak pierwiastek 5go stopnia z x

  3. Program ogólnie ok ale tylko ogólnie. Naucz się używać debugera i czytaj co wypluwa Ci kompilator . Zmienna n jest typu int a Ty próbujesz ją wpisać z klawiatury jako zmiennoprzecinkową. Stąd pętle for głupiały. Poza tym w wariancie gdzie A<B użyłeś zmiennej b która jest nie zadeklarowana . Powinno być chyba B ? tak ? W C nie możesz deklarować zmiennych gdzie Ci sie to podoba jak w C++ stąd też deklaracja zmiennej i w pętli for też nie jest najlepszym pomysłem. Tak nawiasem mówiąc to kompilowałeś chociaż raz jeden z twoich programów ? :D

0

W pierwszym programie chcę uzyskać sumę wszystkich elementów szeregu.

0

Co to znaczy "jednak wyskakuje mi tablica."

1

Ad.1.
Wyświetlasz W na każdym kroku - więc masz tablicę.
Pamiętaj że nie da się obliczyć pierwiastka z liczby ujemnej (przynajmniej wynik nie będzie liczbą rzeczywistą).
Ad.2.
Tak samo jak w poprzednim zadaniu nie da się obliczyć potęgę ułamkową z liczby ujemnej.

0

Nie sprawdzaj czy W jest większe od 0 bo to bez sensu. Sprawdzaj czy (3*n - x) jest większe od 0 (pierw kwadratowy z liczby ujemnej nie istnieje = błąd!). Poza tym przy każdej iteracji pętli wyświetlasz informacje o tym co masz pod W. Stąd też chyba ten problem że masz tablicę ?

0
artender67 napisał(a):
  1. Funkcja pow z biblioteki math przyjmuje jako drugi parametr typ int a Ty podajesz liczbę zmiennoprzecinkową - to jeden z błędów. Zastanów się jak inaczej to obliczyć. Pamietej że x^1/5 to nic innego jak pierwiastek 5go stopnia z x

Myślałem, że właśnie poprzez funkcję pow można obliczyć pierwiastek stopnia wyższego niż 3. Możesz podać inny sposób?

_13th_Dragon napisał(a):

Ad.1.
Wyświetlasz W na każdym kroku - więc masz tablicę.

Mógłbyś mnie naprowadzić co mam zrobić, aby uzyskać sumę szeregu w jednej linijce?

0

Mógłby mi ktoś edytować ten pierwszy program, aby był poprawny i zliczał sumę tego szeregu, bo nie mogę sobie za nic z tym poradzić.

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