Dokładnie tak. Blocks zeruja pewną zmienną za ciebie, a ideone czasami tak, a czasami nie, w zależności od humoru - oczywiście żartuję.
Wszystko zależy jak intensywnie wcześnie była "używana" przydzielana pamięć. Pamiętaj, że zmienne lokalne nie są automatycznie zerowane. Wystarczy więc to tylko zrobić, dodać tylko 3-4 znaczki [wliczając dwie spacje] w odpowiednim miejscu: " = 0" i już
Proszę o pomoc (nie potrafię znaleźć przykładu w którym program podawał by złe odpowiedzi).
link: https://ideone.com/amAyYH21
Witam. Spoj pokazuje bledna odpowiedz mi natomiast niestety nie udalo sie znalezc bledu.(biblioteki to iostream cmath stdlib.h math.h w komentarzu nie pokazywalo wiec tu pisze)
include
include
include
include
using namespace std;
int n,t,j;
double srednia,najblizsza,suma,m;
int main()
{
cin>>t;
double *testy=new double [t];
for(int i=0; i<t; i++)
{
suma=0;
cin>>n;
int *tab=new int [n];
for(int j=0; j<n; j++)
{
cin>>tab[j];
suma+=tab[j];
}
srednia=suma/n;
double *odleglosc=new double [n];
for(int j=0; j<n; j++)
{
odleglosc[j]=fabs(srednia-tab[j]);
}
m=odleglosc[j];
for(int j=0; j<n; j++)
{
if(m>odleglosc[j])
m=odleglosc [j];
}
najblizsza=tab[j];
for (int j=0; j<n; j++)
{
if(m==fabs(srednia-tab[j]))
{
najblizsza=tab[j];
break;
}
}
cout<<najblizsza;
}
return 0;
}
ACC:smiley:
Sprawdziłem wyniki, pętla przepisująca wartość była niepoprawna. Dzięki więc za testy bo bardzo pomogły.
Swoją drogą zaczęło mnie zastanawiać jaka jest logika pisania takich testów do programów, w sensie skąd wiesz że to w tym konkretnym miejscu może być błąd, albo tu się “kryje niespodzianka” ?