Dwa zadania w C++-sprawdzenie

Perezek
Użytkownik
Użytkownik
Posty: 31
Rejestracja: 11 paź 2009, o 13:57
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 3 razy

Dwa zadania w C++-sprawdzenie

Post autor: Perezek »

Witam
Mam prośbę, aby ktoś rzucił okiem czy poniższe zadania są dobrze rozwiązane.
Z góry dzięki za pomoc

1/
a) Napisz w języku c++ funkcję CiągGeometryczny, której argumentami są
a0-pierwszy wyraz ciągu geometrycznego, q-iloraz ciągu, n-numer wyrazu ciągu
ctg-n-elementowa tablica przechowująca kolejne wyrazy ciągu i która
zwraca sumę n wyrazów tego ciągu.
b) narysuj schemat blokowy tej funkcji
c) napisz fragment programu który:
-wywołuje funkcję CiągGeometryczny dla 7 wyrazów ciągu a0=5, q=0,2,
tablicy t.
-wypisuje na ekran wyrazy podanego ciągu oraz sumę obliczoną w funkcji.
Zadeklaruj wszystkie potrzebne obiekty.

ad. a)

Kod: Zaznacz cały

int CiagGeometryczny(int a0,int q, int n,int ctg[])
{
 int suma=0;
 ctg[0]=a0;
 for(int i=1;i<n;i++)
  {
   ctg[i]=ctg[i-1]*q;
  }
 for(int i=0;i<n;i++)
  {
   suma+=ctg[i];
  }
 return suma;
}
ad. c)

Kod: Zaznacz cały

int main()
{
 cout<<CiagGeometryczny(5,0.2,n,t);
 for(int i=0;i<n;i++)
  {
   cout<<"element # "<i<<"="<<t[i]<<endl;
  }
}
2/
Dany jest n-elementowy zbiór Z trójkątów. Napisz program, który znajduje
w zbiorze Z trójkąt o największym polu. Każdy trójkąt jest reprezentowany
przez podstawę typu odcinek oraz wysokość. Odcinek jest reprezentowany
przez dwa punkty o współrzędnych x i y. Zdefiniuj struktury:
trójkąt, odcinek, punkt.

Kod: Zaznacz cały

struct punkt {
   int x;
   int y;
};
struct odcinek {
   struct punkt A;
   struct punkt B;
};
struct trojkat {
   struct odcinek podstawa;
   int wysokosc;
};

int index, max=0;
for(int i = 0; i<n; i++) {
   int dl_x = abs(Z[i].podstawa.A.x - Z[i].podstawa.B.x); // Odległość międy wsp. x
   int dl_y = abs(Z[i].podstawa.A.y - Z[i].podstawa.B.y); // Odległość międy wsp. x
   int podst = sqrt(dl_x*dl_x + dl_y*dl_y); // Pitagoras
   int pole = 0.5*podst*Z[i].wysokosc; // Pole
   if(pole > max) { // Porównanie z zapamiętanym max polem
       max = pole; // Przypisanie tego maxa
       index = i; // Zapamiętanie indeksu trójkąta w zbiorze
   }
}
Crizz
Użytkownik
Użytkownik
Posty: 4094
Rejestracja: 10 lut 2008, o 15:31
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 12 razy
Pomógł: 805 razy

Dwa zadania w C++-sprawdzenie

Post autor: Crizz »

A gdzie w zadaniu drugim jest funkcja main, albo deklaracja jakiejś innej funkcji?

Powinna się zaczynac po deklaracjach struktur.

Wiersz "struct odcinek podstawa" jest błędny, nie powinien zawierać słowa struct.

Jest tu też jednak inny błąd, funkcja sqrt zwraca daną typu float, więc wyniku tej funkcji nie możesz przypisać do zmiennej typu całkowitego. Najbardziej rozsądna byłaby tu zmiana wszystkich użytych zmiennych, które oznaczają współrzędne, długości lub pola, na typ float.-- 24 lutego 2010, 19:16 --W c) zmienna n nie jest nigdzie zadeklarowana, a co więcej nie jest do niczego potrzebna (powinna być po prostu zastąpiona liczbą 7). W a) zmienna a0,q,suma i ctg[] również powinny być typu float, jeśli program ma poprawnie działać dla parametru t=0.2 i innych parametrów, które są liczbami zmiennoprzecinkowymi.
ODPOWIEDZ