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” ?
Witam odgrzeje temat początki nauki w C++ czy może ktoś wskazać co robię nie tak? Wydaje mi się że zadanie zrozumiałem dobrze…
#include "iostream"
#include "cmath"
using namespace std;
int ileLiczb, ileTestow, suma, cel, n;
double srednia;
int main()
{
cin >> ileTestow;
if (ileTestow < 101)
{
for (int j = 0; j < ileTestow; j++)
{
cin >> ileLiczb;
int *tablica = new int[ileLiczb];
for (int i = 0; i < ileLiczb; i++)
{
cin >> n;
if (n > 0 && n < 100)
{
tablica[i] = n;
suma += tablica[i];
}
else
{
i -= 1;
}
}
cel = tablica[0];
srednia = suma / ileLiczb;
for (int i = 0; i < ileLiczb; i++)
{
if ((abs(srednia - tablica[i])) < ((abs(srednia - cel))))
cel = tablica[i];
}
cout << cel << endl;
}
}
else
{
cout << "Max prob 100; " << endl;
}
return 0;
}
Twój kod nie działa nawet dla testu przykładowego: https://ideone.com/cgND3B9
to nie jest twój pierwszy post, i zapewne przeczytałeś ten wątek - to powinieneś wiedzieć, że kod programu powinien być przekazywany jako link do ideone.com3
2
4 4 1 3 2
4 2 3 4 1
Ok, w takim razie test:
in
50
20 89 7 11 83 32 73 63 72 93 43 82 11 53 45 97 88 47 67 43 87
20 48 79 49 63 50 35 31 8 21 15 3 86 88 97 97 58 24 94 62 93
20 12 79 93 25 41 59 6 97 4 81 34 36 86 59 35 62 27 37 47 63
20 68 86 50 61 88 78 86 27 60 25 41 49 83 61 87 17 38 34 70 5
20 76 50 22 19 69 13 56 64 55 63 23 45 86 56 30 56 85 74 96 26
20 54 52 22 24 8 46 86 68 33 86 61 84 88 89 66 74 52 16 31 52
20 74 94 23 5 61 25 17 49 46 62 6 98 55 34 18 74 91 99 83 91
20 49 63 7 46 90 90 8 45 56 11 59 32 55 85 65 77 78 71 68 82
20 79 57 98 96 15 79 60 75 57 61 71 13 47 73 44 73 15 69 92 6
20 16 4 87 13 29 89 43 29 28 20 2 34 78 52 13 91 96 66 8 6
20 69 18 37 22 86 80 53 76 46 41 22 48 47 93 12 73 97 37 2 97
20 39 69 54 98 18 67 74 51 28 62 86 60 88 95 86 85 37 85 50 60
20 70 28 28 16 84 75 89 50 39 98 82 2 85 91 56 78 62 33 49 21
20 6 58 79 49 64 83 79 4 8 34 76 49 15 58 68 75 17 64 1 80
20 28 59 39 25 76 48 5 52 46 31 52 5 2 73 39 10 26 84 49 41
20 57 81 11 11 4 70 23 27 84 3 17 9 76 19 71 63 80 23 15 6
20 3 42 15 29 22 99 99 7 70 67 43 66 92 59 82 16 32 90 9 83
20 94 84 25 49 47 52 87 7 91 69 36 22 9 38 34 52 38 20 70 82
20 66 30 69 90 27 88 15 8 2 66 63 40 90 54 24 49 40 74 38 69
20 56 60 99 63 72 82 65 3 35 71 94 30 73 67 2 48 21 38 73 6
20 1 55 66 14 48 23 65 92 26 60 49 33 4 34 44 54 79 12 53 48
20 64 25 26 18 91 57 53 24 52 77 77 70 4 58 48 44 43 75 91 84
20 74 89 63 3 75 65 69 9 47 58 97 61 76 93 42 45 73 7 90 64
20 55 63 1 76 43 2 39 24 3 96 16 91 33 96 45 55 66 31 16 42
20 60 76 34 24 54 88 46 67 91 76 6 24 17 69 18 78 89 11 59 82
20 52 20 18 14 98 94 32 91 61 82 70 7 77 61 73 98 83 62 74 47
20 47 40 74 61 86 90 94 45 48 32 47 37 1 25 9 85 31 72 18 15
20 10 13 16 4 32 9 92 28 51 56 4 65 47 84 39 21 13 38 83 95
20 29 68 74 38 33 17 78 93 55 81 92 59 30 96 36 23 73 69 16 61
20 79 93 66 14 55 28 8 33 63 17 25 80 65 32 60 83 91 83 85 9
20 86 77 63 20 41 38 10 1 18 98 26 16 58 60 98 57 19 24 59 4
20 91 46 17 27 91 93 73 2 74 2 94 19 61 91 50 87 84 41 84 19
20 44 61 19 53 10 31 61 28 77 66 13 30 33 63 28 13 55 97 99 14
20 36 35 93 28 95 19 16 16 34 26 60 95 61 16 63 2 63 44 54 37
20 5 40 36 93 5 15 39 71 55 25 12 4 91 93 55 18 29 47 65 94
20 86 57 44 59 2 57 45 31 45 89 64 40 17 72 70 65 79 53 44 65
20 78 97 56 87 2 37 49 76 21 28 90 83 68 8 56 2 31 84 22 45
20 69 18 91 84 91 52 34 56 20 12 44 55 82 19 39 65 20 60 87 29
20 63 75 60 82 58 47 19 63 35 59 83 71 36 36 21 40 68 29 63 3
20 71 37 45 91 67 5 63 57 20 83 78 98 62 68 70 29 45 54 13 48
20 17 44 31 23 25 78 88 79 37 90 81 66 51 99 71 32 50 57 16 96
20 35 52 31 89 99 78 30 32 60 46 53 47 19 26 53 15 36 25 13 77
20 64 82 57 58 64 93 66 52 35 14 95 43 45 83 50 16 67 45 3 95
20 91 37 74 58 93 20 45 29 56 64 60 10 3 85 70 53 14 41 45 47
20 86 78 26 66 66 22 75 45 13 21 43 87 33 77 40 16 10 75 59 71
20 11 15 1 80 6 87 74 35 87 72 26 33 20 85 54 50 21 72 11 60
20 42 16 56 51 73 65 94 70 8 51 42 78 63 24 25 89 90 40 82 59
20 28 36 48 70 98 63 7 75 33 14 42 47 67 55 46 19 51 18 73 64
20 3 85 83 24 75 79 95 58 13 6 16 61 28 46 51 23 79 2 17 82
20 97 28 51 29 8 52 35 67 52 31 2 87 22 61 38 64 77 52 88 57
Mój out:
63
58
47
60
55
54
55
56
60
43
53
67
56
49
39
27
59
49
49
56
44
53
61
45
54
61
48
39
55
55
41
61
44
44
47
53
49
52
47
54
57
46
57
47
45
50
56
48
46
51
Ty masz zupełnie inny
Jak dla mnie, chociaż sam mam psa, a córka jest właścicielką pięknej klaczy, to i tak za dużo zwierzaków, @niedzwiedz89 bear, kot, koń, klacz itd
Tak naprawdę, do AC brakuje bardzo niewiele, dwóch malutkich nawiasików.
Jednak twój kod, mimo starannego użycia białych znaków [niestety tylko w poziomie ] i pomocy zwierzaków, pozostawia dużo do życzenia.
c.match
zmienne globalne
…
itd
Czemu koń? I czemu nie ma imienia? Np Różnica, albo Różniczka?
Czemu klaczy dajesz tylko 100 pkt? [taki żart, oczywiście że wiem czemu].
W C++ zamiast tablic (plus: new i delete[]), można i powinno się używać [z STL’a] wektorów.
Wskaźniki? To domena C, w C++, jeżeli już, to są bardziej inteligentne. No i po co Ci one w twoim kodzie? Aby go skrócić i uprościć? Jeżeli tak, to Ci się niestety nie udało.
*kot++ i *kot-- świadczą, że nie odrobiłeś lekcji [nie doczytałęś, niezrozumiałeś]
Ewentualnie [chociaż *kot++, *kot–, nie powoduje błędu] zamień jednak w twoim kodzie i w takim przypadku [takim użyciu] na poprawniejsze [i krótsze]:
kot++, kot–
PS
klacz = kon[ń] ? No niby racja, ale gdzie jest ogier? A wtedy czasami ogier + klacz = źrebak, gdzie źrebak = młody_koń [ogierek lub klaczka]. I wtedy może wynik to źrebię?
O czymś zapomniałem? Wałach?
Może lepiej pozmieniać i ponadawać wszystkim zwierzakom odpowiednie imiona? Ułatwiło by to czytanie kodu pomagającym, nie znającym się na zwierzęcych koligacjach i niuansach. Np różnica, różnicaMinimalna, różniczkaAktualna itd
PS 2
Wydaje mi się, że łatwiej byłoby mi poprawić twój kod, niż wymieniać wszystkie błędy. Oczywiście nie byłaby to tylko [jedna] wersja poprawiona i nie gwarantuję, że najlepsza z wszelkich możliwych, ale tu nie zamieszczamy działających kodów.
Dlatego, ewentualnie po AC, możesz mnie poprosić [o taką poprawioną wersję twojego kodu], poprzez PM [prywatny mail]. Preferuję in English, + parę słów wstępu o sobie + przeczytanie i refleksja na temat wątku: jak zdobyć szacun na SPOJ’u.
Pytanie było czemu, a nie jak Może twoje generator[y] “powinne być” jeszcze bardziej inteligentne [AI] lub jeszcze bardziej interaktywne?
A tak na serio, jeżeli w kodzie pytającego, znajdzie się błąd, można wymyśleć odpowiedni, pojedyńczy test, “pod” ten błąd. Czasami jednak jest to trudniejsze i łatwiej wygenerować odpowiednio duży test i przetestować na nim kod pytającego. Potem, można z takiego dużego testu wyciąć pojedyńczy, czy kilka błędnych. Tak czy siak [zarówno generowanie jak i czytanie i “ręczne” analizowanie kodu] jest pracochłonne i często i tak nie doceniane adekwatnie [albo mało doceniane] przez pytających.
Zdecydowana racja przyznaje się na wejściu poszedłem na łatwizne i skorzystałem z podpowiedzi “mariusz193” - redysz widząc jak się napracowałeś jest mi wstyd sorry… (Jak się tworzy takie generatory…?)
Ale z drugiej strony poco sobie utrudniać jak można łatwiej
W każdym bądź razie dziękuje wam bardzo za pomoc i za tak szybką reakcję - niesamowite jak prężnie działa to forum.
“narberj” bez kitu taka mała rzecz a taką robi robotę - ale cieszę się, że robię takie błędy bo to dużo uczy
A ja jak sam widzisz jestem jak te moje zwierzaki - byty zmienne żyjące w stadzie jedynie podążające w jakimś kierunku, kierujące się instynktem… A zresztą spójrz na fenomen biedronkowych świerzaków, słodziaków niby bezsens ale robią robotę także rozumiem, że takie zmienne mogą sprawiać kłopot dla sprawdzających (sorry) ale z drugiej strony zawsze coś innego i jakoś raźniej (Chyba dlatego moje zmienne są zwierzątkami zaczynającymi się na k…)
Dziękuje Ci strasznie za Twoje uwagi dopiero zaczynam przygodę z C++ nie miałem żadnej styczności z C, sam się wszystkiego uczę i takie info jest dla mnie niesamowicie pomocne. Zaraz siadam i rozkminiam wektory…
PS. Co jest nie tak z c.math?
Nie dokońca. C++ nie jest zgodny w 100% z C. Wielokrotnie próbując zbudować większe projekty napisane w C pod kompilatorem C++ miałem problemy, musiałem coś zmieniać.
Dlatego też powinno się używać wyspecjalizowanych bibliotek C++. W C++17 podobno (nie potwierdzam jeszcze) doszło więcej niekompatybilności.