No to jademy
- float, float... float są ok. Ale nie na SPOJu. Używaj double - mały błąd w precyzji spowodowany przez używanie float może skutkować WA. Użycie double w wielu przypadkach niweluje tego rodzaju błędy.
- if(test<101), if(n>1 && n <100). Po co to? W specyfikacji wejścia jest jasno podane z jakiego przedziału są liczby. Po co więc sprawdzać czy te warunki są spełnione skoro jest jasno napisane, że są?
- int tablica[n]; Poczytaj o dynamicznym alokowaniu pamięci bądź używaj statycznej tablicy int tablica[999999] (bądź inna duża liczba, która na pewno wystarczy w danym zadaniu).
- Jest ok, ale na przyszłość przeczytaj http://stackoverflow.com/questions/3118165/when-do-i-use-fabs-and-when-is-it-sufficient-to-use-stdabs41. Zawsze o jedną rozterkę mniej za ileś tam
- if(tablica[k]==srednia) to bardo, ale to bardzo zły pomysł. tablica jest typem int więc w pamięci komputera 2 to 2. srednia jest nawet nie double a (o zgrozo!) float. 2 wprowadzone do float to na przykład 1.99999 albo 2.000001 albo coś tego typu - poczytaj o zmiennoprzecinkowej reprezentacji liczb.
Napisałem kawałek kodu, ale nie wiem dlaczego na koniec mam nieskończona liczbę zer. Proszę o jakąś wskazówkę.
https://ideone.com/na111D37
Cześć,
PYTHON. Wpisuję tutaj bo nie widziałem osobnego wątku dla języka. Czy ktoś bardziej doświadczony mógłby rzucić okiem i podpowiedzieć dlaczego nie zostaje zaliczony kod?
your code goes here
t = int(input())
for i in range(0, t):
x = list(map(int, input().strip().split()))
if x:
xL = len(x)
s = 0
for i in x:
s += i
sA = float(s/xL)
m = x[0]
diff = abs(float(x[0] - sA))
for i in x:
if abs(float(i - sA)) < diff:
diff = abs(float(i - sA))
m = i
print(m)
else:
print(0)
[quote="pedro_modrzew5, post:12, topic:17970"]
t = int(input())
for i in range(0, t):
x = list(map(int, input().strip().split()))
if x:
xL = len(x)
s = 0
for i in x:
s += i
sA = float(s/xL)
m = x[0]
diff = abs(float(x[0] - sA))
for i in x:
if abs(float(i - sA)) < diff:
diff = abs(float(i - sA))
m = i
print(m)
else:
print(0)
[/quote]
Poprawione
Hej,
Faktycznie, chociaż byłem pewny, że jest dobrze…hmm…może przy kolejnym wklejaniu dodałem jakaś starszą wersje i się za fiksowałem, ale…Błąd w tej wersji polegał na tym, iż brałem całą linię do listy a potem do średniej, a przecież pierwsza liczba linii to ilość liczb do średniej.
Mimo wszystko dzięki.
pomożecie?
#include <iostream>
using namespace std;
double suma, srednia, drugi;
int n, ile;
int main()
{
cin >> ile;
while(ile>0)
{
for(int i=0; i<ile ;i++)
{
suma = 0;
srednia=0;
cin >> n;
double * t = new double[n];
for(int j=0; j<n; j++)
{
cin >> t[j];
suma = suma + t[j];
}
srednia = suma/n;
double roznica, najmniejsza = 999999999;
for(int j=0; j<n; j++)
{
roznica = srednia - t[j];
if(roznica<0)roznica = roznica*-1;
if(roznica==najmniejsza) {drugi = t[j]; cout << drugi;}
if(roznica<najmniejsza)
{
t[0]=t[j];
najmniejsza = roznica;
}
}
cout << t[0]<<endl;
delete [] t;
ile--;
}
}
return 0;
}
-
Jeśli zaczynasz, przeczytaj koniecznie! <--kliknij w to proszę!
-
Co poniższy fragment robi? Czy jest on potrzebny?
Suggested Topics
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
MBPROB01 - History version in plaintext pl.spoj.com | Zbiór zadań | 6 | 152 | Jul '24 |
FR_20_02 - Poszukiwacze skarbów - Błąd w testach? | Zbiór zadań | 1 | 75 | Apr 2 |
PP0504B - StringMerge - w języku C | Zbiór zadań | 5 | 187 | Jun '24 |
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 125 | Feb 1 |
TOPSORTL - Porządek leksykograficzny w grafie | Zbiór zadań | 3 | 127 | Jul '24 |