Polski Serwis Naukowy - OnLine od 1999 roku
RSS
Piątek, 10 lutego 2012
Gabriel, Scholastyka, Jacek, Tomisława
 W 1920 roku gen. Józef Haller dokonał symbolicznych zaślubin Polski z Morzem Bałtyckim
 1925 - Polska podpisała konkordat z Watykanem
 1990 - na Kremlu spotkali się Michaił Gorbaczow i Helmut Kohl - przywódca ZSRR wyraził zgodę na zjednoczenie Niemiec
Nowe publikacje
Post dodany: |9 Maj 2010|, 2010 08:52
Data rejestracji: 09 Maj 2010 postów: 2
Witam. Bardzo prosze o pomoc przy rozwiazaniu dwoch nastepujacych zadan :
1.Napisz program, który pobiera na wejściu ciąg liczb rzeczywistych aż do momentu, gdy wprowadzone zostanie 0 i jako wynik wyświetla największą ilość podanych kolejno liczb dodatnich.
2.Napisz program który obliczy pole powierzchni ograniczonej wykresem funkcji y=x2+2x – 8, osią OX oraz prostymi x=2 i x-=8
zadania sa mi potrzebne na czwartek ale gdyby byly na jutro to byloby wspaniale!! Niestety nie interesuje sie informatyka a te zadania zawaza na mojej ocenie na koniec(niestety) bardzo prosze wiec o pomo i wyrozumialosc. z gory dziekuje
pozdrawiam
Post dodany: |9 Maj 2010|, 2010 11:38
Data rejestracji: 08 Kwi 2008 postów: 816
| Cytat | | 1.Napisz program, który pobiera na wejściu ciąg liczb rzeczywistych aż do momentu, gdy wprowadzone zostanie 0 i jako wynik wyświetla największą ilość podanych kolejno liczb dodatnich. |
W przypadku pierwszego programu przychodzą mi do głowy trochę zawiłe instrukcje, tym bardziej, że dawno nad c++ nei siedziałem. Problem polega jedynie na odróżnieniu jednej serii od drugiej. Możemy wykorzystać pętlę while do. Dopóki zmienna jest różna od zera, wykonuj instrukcję. W tej pętli można zamieścić zmienną typu int, którą byśmy inkrementowali za każdym razem, gdy tylko instrukcja warunkowa if była by spełniona, tzn.
if (zmienna double < 0)
zmienna typu int++;
Problem w tym, że takie działanie wyliczy ilość podanych (w ogóle) liczb ujemnych a nie danej serii. Dlatego też pokusiłbym się o zamieszczenie dynamicznej tablicy. Wówczas jeśli zmienna typu double byłaby dodatnia, należałoby zamieścić kolejną instrukcję warunkową albo po prostu else na pierwszej instrukcji warunkowej, która odpowiadałaby za przejście do następnego elementu tablicy. Nadawanie wartości każmu elementowi z taliby opierałoby się oczywiście na inkrementacji.
| winrar napisał/a | | 2.Napisz program który obliczy pole powierzchni ograniczonej wykresem funkcji y=x2+2x – 8, osią OX oraz prostymi x=2 i x-=8 |
Najpierw obliczmy całkę:
Tak więc wystarczy, aby program obliczył
Ostatnio zmieniony przez lemon |9 Maj 2010|, 2010 11:41, w całości zmieniany 2 razy
Post dodany: |9 Maj 2010|, 2010 12:48
Data rejestracji: 09 Maj 2010 postów: 2
a czy ten kod daloby sie jakos przerobic tak zeby pasowal do zadania nr 2?
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
double funkcja(double x) //funkcja dla której liczymy calkę, tu x^2
{
return x*x;
}
double pole_obszaru(int n, double a, double b)
{
double P = 0; //zmienna która sumuje pola prostokątów
double d = (b-a)/n; //dlugość przedziałów na jakie dzielimy <a;b>
double x; //punkty pośrednie przedzialów
for (int k=0; k<n; k++)
{
x = a+(d*k)+(d/2);
P = P+d*fabs(funkcja(x)); //suma pól prostokątów
}
return P; //suma pól wszystkich prostokątów
}
int main()
{
int ilosc;
double a, b;
cout << "Program oblicza pole obszaru ograniczonego";
cout << "wykresem funkcji w przedziale <a; b>" << endl;
cout << "podaj wartosc lewego kranca przedzialu: a ";
cin >> a;
cout << "podaj wartosc prawego kranca przedzialu: b ";
cin >> b;
cout << "Na ile przedzialow podzielic wyjsciowy przedzial?: ";
cin >> ilosc;
cout << "wartosc pola : " << pole_obszaru(ilosc,a,b);
cin.ignore();
getchar();
return 0;
}
Post dodany: |10 Maj 2010|, 2010 07:48
Data rejestracji: 08 Kwi 2008 postów: 816
Teoretycznie możesz wykorzystać metodę prostokątów ale musisz liczyć się z faktem, że mniej lub bardziej, otrzymasz wynik niedokładny. Tradycyjne liczenie całek też opiera się na tej metodzie z tym, że liczba prostokątów dąży do nieskończoności, więc ewentualne zawyżenie lub zaniżenie wyniku dąży do zera.
Podsumowując, jeśli chcesz korzystać z metody prostokątów zadbaj o to, żeby ich liczba była jak największa, wtedy otrzymasz w miarę dokładny wynik
Kod dałoby się przerobić ale po co? Lepiej po prostu napisać:
| Kod | #include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a, b;
cout << "Program oblicza pole obszaru ograniczonego funkcja x*x+2x-8 ";
cout << "w przedziale <a ; b>" << endl << endl;
cout << "Podaj wartosc lewego kranca przedzialu (niech a>0 lub a=0): ";
cin >> a;
cout << endl << "Podaj wartosc prawego kranca przedzialu (niech b>0 i b>a): ";
cin >> b;
cout << endl << "P = " << (b*b*b-a*a*a)/(3)+(b*b-a*a)-8*(b-a);
cin.get();
cin.get();
return 0;
} |
Post dodany: |12 Maj 2010|, 2010 12:21
Data rejestracji: 11 Cze 2007 postów: 5107
Dodam tylko, że dla 500 prostokątów wynik jest już bardzo dokładny  Patrzę na wykształcenie winrara i sądzę, że właśnie o tą metodę chodzi.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Nie możesz ściągać załączników na tym forum
|
Wersja do druku
Dodaj temat do Ulubionych
|
Powered by
phpBB © 2000, 2002, 2005, 2007 phpBB Group
|