Nie. Błąd jest w tym, że definiujesz gruszka = 0 i w następnej linii tworzysz tablicę o rozmiarze gruszka. Nigdzie pomiędzy nie nadajesz jej wartości (dopiero po stworzeniu zeroelementowej tablicy).
Wkleiłem stricte dwie linie Twojego kodu. Dajesz gruszka=0
i od razu stwórz tablicę o rozmiarze gruszka
. Widzisz to?
Jeśli chcesz stworzyć tablicę a dopiero potem nadać jej rozmiar to są trzy wyjścia:
-
zastosować vector: https://en.cppreference.com/w/cpp/container/vector:2
vector tablica;
int rozmiar;
cin >> rozmiar;
tablica.resize(rozmiar); -
zastosować tablicę tworzoną dynamicznie (wskaźniki, operator new);
float *tablica;
int rozmiar;
cin >> rozmiar;
tablica = new float[rozmiar]; -
stworzyć na początku tablicę o rozmiarze którego na pewno nie przekroczysz, treść zadania podaje że masz do zsumowania maksymalnie 99 liczb więc 100 elementowa tablica wystarczy:
float tablica[100];
a potem indeksować od zera do wartości rozmiar.
PS. stosuj “normalne” nazewnictwo, jak ktoś zobaczy w kodzie banan = gruszka/jablko; - to może później nie wiedzieć co toto wogle robi.
Napisałem kod od nowa, poprawiając tablice według waszych rad.
Również kod przechodzi test https://ideone.com/xYG3hh10
Sędzia SPOJ mimo to go odrzuca, mógłby ktoś mnie naprowadzić na odpowiedź?
@mariusz193
WIELKIE DZIĘKI dostałem AC
@tarpauwatratar
ad 1. Dzięki na pewno się przyda.
ad 2. Faktycznie, ciezko o podejscie 1.3, będę pamiętał.
ad 3. Mój błąd powinienem chyba zrobić tak:
"zastosować tablicę tworzoną dynamicznie (wskaźniki, operator new);
float *tablica;
int rozmiar;
cin >> rozmiar;
tablica = new float[rozmiar];"
Jak radził czaffik
Witam, mój pierwszy kod więc mam nadzieje ,że nikogo nie przestraszę. Przy trzecim teście jako liczbę najbliżej średniej wskazuje mi 3 zamiast 2 ktoś jest w stanie wskazać mi błąd/błędy ?
#include
#include
#include <math.h>
using namespace std;
int liczby[5];
double srednia;
int wynik, ile;
int main()
{
cin >> ile;
for (int i=0; i<ile; i++)
{
cin>>liczby[i];
srednia+=liczby[i];
}
srednia=srednia/4;
//cout<<srednia<<endl;
wynik=0;
for (int i=0; i<ile; i++)
{
if (fabs(srednia-liczby[i-1]< srednia-wynik))
{
wynik=liczby[i-1];
i++;
}
}
cout<<wynik;
return 0;
}