Dzień dobry wieczór,
Wyjątkowo nie mam problemu z kodem a z zadaniem:
Średnia z 5ciu podanych liczb (4 1 2 3 4) to 2.8 więc najbliżej średniej jest liczba 3, a w zadaniu jest podane że powinna wyjść 2
Dlaczego tak a nie inaczej (widziałem że mowa o pierwszym elemencie z listy ale w takim razie gdzie jaka jest granica błędu?)
A, i jeszcze mój kod: https://ideone.com/yDU25t
Pozdrawiam!
Eeeech, wykładasz tak od razu kawa na ławę… Pamiętam moje problemy z tym zadaniem. Ni w ząb nie mogłem zrozumieć przykładów testowych. Przeczytałem wszystkie komentarze na forum dotyczące tego zadania, przeczytałem kilka razy treść zadania, ale w sumie co tu wiele czytać - średnia to średnia, zadanie proste tylko autorowi coś się pomyliło… Ale zacząłem jednak myśleć, przecież są ludzie, którzy rozwiązali to zadanie. Czy im też się pomyliło? Jeszcze raz przeczytałem wszystkie komentarze i wreszcie PRZECZYTAŁEM treść zadania. Gdy ją zrozumiałem to dalej już było banalne. Fakt, że zajęło mi to trochę czasu, bo kilka razy je sobie odpuszczałem i brałem się za inne. Nie wiem czy dobrze jest tłumaczyć wszystko tak literalnie w sytuacji, gdy zadanie jest NAPRAWDĘ DOBRZE opisane przez autora. W końcu w programowaniu chodzi nie tylko o umiejętność napisania kodu, ale i o zrozumienie problemu. W każdym razie tak mi się wydaje… Żeby było jasne, ja się Ciebie nie czepiam tylko tak sobie rozmyślam
Witam nie mam pojęcia dlaczego ten kod mi nie przechodzi może chciałby ktoś rzucić okiem ?
#include
using namespace std;
int main() {
int n;
cin >> n;
double srednia;
double suma = 0;
int index = 0;
for (int i = 0; i < n; ++i) {
int m;
cin >> m;
int t[m];
for (int j = 0; j < m; ++j) {
cin >> t[j];
suma += t[j];
}
srednia = suma / m;
double najblizszywartosc = abs(srednia - t[0]);
for (int j = 0; j < m; ++j) {
if (najblizszywartosc > abs(srednia - t[j])) {
najblizszywartosc = abs(srednia - t[j]);
index = j;
}
}
cout << t[index] << endl;
suma = 0;
}
return 0;
}
witam
spoj twierdzi że kod podaję błędną odpowiedź i nie rozumiem czemu ponieważ u mnie jak i na ideone(mój kod na ideone) wszystko działa dobrze jestem początkujący i nie znam się na tym zbyt dobrze, może robię po prostu coś w zły sposób ://
Blockquote
#include
using namespace std;
float ab(float x)
{
if (x < 0) x = x * (-1);
return x;
}
int num_var;
int var[100];
float diff[100];
float avg, m;
int closest = 1;
int ile;
int main()
{
cin >> ile;
for (int i = 0; i < ile; i++)
{
cin >> num_var;
avg = 0;
for (int i = 1; i <= num_var; i++)
{
cin >> var[i];
avg += var[i];
}
avg /= num_var;
for (int i = 0; i <= num_var; i++) diff[i] = ab(avg + (var[i] * (-1)));
m = diff[1];
for (int i = 1; i <= num_var; i++)
{
if (m > diff[i])
{
m = diff[i];
closest = i;
}
}
cout << var[closest] << endl;
}
return 0;
}
Po pierwsze, który kod jest łatwiejszy w debuggu: mój czy Twój?
#include <iostream>
#include <cmath>
//np. autor mogl pominac jakies zero w specyfikacji wejscia, ...
#define ZAPAS_DLA_PEWNOSCI 10'000
//ale pamietaj, ze tak wolno tylko na spoju i w realu jednak std::cin, ...
using namespace std;
int main()
{
int t, n, answer;
int *arr;
double average;
cin >> t;
while(t--) {
average = 0.0;
cin >> n;
arr = new int [n + ZAPAS_DLA_PEWNOSCI];
for(int i = 0; i < n; ++i) {
cin >> arr[i];
average += arr[i];
}
average /= n;
answer = arr[0];
for(int i = 1; i < n; ++i) {
if(abs(arr[i - 1] - average) > abs(arr[i] - average))
answer = arr[i];
}
cout << answer << endl;
delete[] arr;
}
return 0;
}
Po drugie:
1
4 2 3 0 4
Kod
cin >>n;
int liczba[n];
nie jest poprawnym kodem C++ (jest niezgodny z jego standardem). Nie można ustawiać rozmiaru tablicy podczas działania programu, tablica ma stałą szerokość od samego początku. Chcąc zmieniać/ustalać jej rozmiar podczas działania programu należy skorzystać z tablic dynamicznych lub wektorów. ALE większość kompilatorów na to pozwala z różnym efektem (czasem się wywali).
W Twoim wypadku można stworzyć tablicę 100 elementową
int liczba[100]
i znając n
wypełniać ją tylko do odpowiedniego momentu.
Suggested Topics
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 172 | Feb 1 |
FR_20_02 - Poszukiwacze skarbów - Błąd w testach? | Zbiór zadań | 1 | 137 | Apr 2 |
SPOJ.com - Problem ZABAWA pl.spoj.com | Zbiór zadań | 6 | 99 | 27d |