• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odległość, wartość bezwględnam, moduł, abs

0 głosów
92 wizyt
pytanie zadane 21 marca 2017 w C i C++ przez Undisputed Bywalec (2,600 p.)

Witam.

Rozwiązuje zadania ze strony solve.edu.pl. Jednak z jednym mam problem.

Mianowicie wg mnie program działa dobrze, a nie jest akceptowany.

http://solve.edu.pl/tasks/view/430 <-Treść

Rozwiązanie moje:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int a,b;
    cin >> a >> b;
    int wynik;
    wynik=abs(b-a);
    cout << wynik;
    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 21 marca 2017 przez Knayder Nałogowiec (37,660 p.)
wynik = abs(max(a,b)-min(a,b));

Spróbuj tak
komentarz 21 marca 2017 przez Undisputed Bywalec (2,600 p.)
Błędna odpowiedź wyskakuje
–1 głos
odpowiedź 21 marca 2017 przez obl Nałogowiec (45,920 p.)
Int to zakres od od -2 147 483 648 do 2 147 483 647 a ty potrzebujesz przechowywać liczby rzędu 4*10e9
komentarz 21 marca 2017 przez QizmoPL Stary wyjadacz (11,500 p.)
long 4 od -2'147'483'648 do 2'147'483'647
unsigned long 4 od 0 do 4'294'967'295
long long 8 od -9'223'372'036'854'775'808 do 9'223'372'036'854'775'807
unsigned long long 8 od 0 do 18'446'744'073'709'551'615
float 4 3.4E +/- 38 (7 cyfr)
double 8 1.7E +/- 308 (15 cyfr)
long double 8 1.7E +/- 308 (15 cyfr)
komentarz 21 marca 2017 przez Undisputed Bywalec (2,600 p.)
Zmieniłem na double, nadal coś jest nie tak, i wg mnie int to 2*10e9
komentarz 21 marca 2017 przez obl Nałogowiec (45,920 p.)
2*10e9-(-2*10e9) = 4*10e9
komentarz 21 marca 2017 przez Undisputed Bywalec (2,600 p.)
Mniejsza o to, z double też nie działa, jakiś pomysł ?
komentarz 21 marca 2017 przez obl Nałogowiec (45,920 p.)
Spróbuj long long.
komentarz 21 marca 2017 przez Undisputed Bywalec (2,600 p.)
Działa, dzięki :) :)
komentarz 21 marca 2017 przez obl Nałogowiec (45,920 p.)
No to mi się udało :)
komentarz 21 marca 2017 przez obl Nałogowiec (45,920 p.)
w ramach degresji ja tutaj odejmowałem od dodatniej ujemną czyli 2e9 - (-2e9) = 4e9
komentarz 6 kwietnia 2017 przez Kamil Duljas Użytkownik (980 p.)

Ja również mam problem z tym zadaniem. Otrzymuje max 80 pkt nawet jeśli mam dobry zakres i wyświetla mi poprawnie:

#include <stdio.h>

long long Abs(int a,int b);

int main()
{
    int a,b;
    scanf("%Ld %Ld", &a, &b);


    if((a>=-2000000000) && (a<=2000000000) && (b>=-2000000000) && (b<=2000000000) ){
       long long c = Abs(a,b);
        printf("%Lu", c);
    }

    return 0;
}
long long Abs(int a, int b){
    if(a>b)
        return a - b;
    return b - a;
}

 

komentarz 8 kwietnia 2017 przez obl Nałogowiec (45,920 p.)

Twoja funkcja przyjmuje jako argumenty dwie zmienne typu int a nie long long więc jak odejmujesz inta od inta do co dostaniesz? Podpowiem: int-a a int w tym przypadku ma za mały zakres.

Podobne pytania

+1 głos
3 odpowiedzi 304 wizyt
0 głosów
0 odpowiedzi 42 wizyt
pytanie zadane 14 lutego 2017 w Systemy operacyjne, programy przez Paweł123 Nałogowiec (30,480 p.)
0 głosów
2 odpowiedzi 253 wizyt
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

66,503 zapytań

113,269 odpowiedzi

239,876 komentarzy

46,641 pasjonatów

Przeglądających: 258
Pasjonatów: 7 Gości: 251

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...