• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PROGRAM NIE DAJE POPRAWNEGO WYNIKU

Aruba Cloud - Virtual Private Server VPS
0 głosów
283 wizyt
pytanie zadane 15 stycznia 2020 w C i C++ przez xZenit Użytkownik (760 p.)

Dane jest zadanie:
Program ma najpierw pobrać ciąg n liczb, w następnej linijce pobrać 2 liczby (u mnie są to: a i b).  W kolejnym kroku program ma wyliczyć średnią ciągu liczb rozpoczynając od a liczby od lewej strony, kończąc na liczbie b (również licząc od lewej strony).

O to napisany przeze mnie kod:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
 int ile, n, z, a, b, k, suma=0;
 double srednia;
 cin>>ile;
 int tab[ile];

 for (n=0; n<ile; n++)
 {
     cin>>tab[n];
 }
    cin>>a>>b;
    k=(b-a-1);
    z=(b-a+1);

 for (int g=(b-a-1); g<=b; g++)
 {
    suma+=tab[k];
    k++;
 }
    srednia=suma/z;
    cout<<floor(srednia);
}

I tu pojawia się pytanie:
Czy ktoś ma może pomysł dlaczego program nie działa i chciałby zasugerować jakieś jego rozwiązanie?

1 odpowiedź

0 głosów
odpowiedź 15 stycznia 2020 przez j23 Mędrzec (195,240 p.)
edycja 15 stycznia 2020 przez j23
--a; --b;

for (int i = a; i < b; ++i)  {
    suma += tab[i];
 }

A tak nie wystarczy?

 

cin>>ile;
int tab[ile];

Takie cuda to nie w C++ (g++ dopuszcza taką konstrukcję, ale to błąd). Nie ma w zadaniu określonej maksymalnej wartości n? Bo jeśli jest, to zwykła tablica wystarczy.

 

Z drugiej strony według tego co napisałeś, to najpierw podana jest długość ciągu n, a później wartości a i b. A w kodzie po n czytasz ciąg liczb. Jeśli po n następują a i b, to tablica nie jest potrzebna.

srednia=suma/z;
cout<<floor(srednia);

Ten floor jest tutaj o tyle bez sensu, że operacja dzielenia jest całkowitoliczbowa (oba operandy są typu int), więc siła rzeczy jej wynik będzie liczba całkowitą i nie ma czego zaokrąglać.

 

Podobne pytania

0 głosów
2 odpowiedzi 479 wizyt
pytanie zadane 15 listopada 2020 w C i C++ przez MrCrow Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 238 wizyt
+1 głos
4 odpowiedzi 743 wizyt
pytanie zadane 6 czerwca 2015 w C i C++ przez DavidMCPolska Bywalec (2,770 p.)

93,327 zapytań

142,325 odpowiedzi

322,396 komentarzy

62,657 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...