Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Liczby ujemne

Ostatnio zmodyfikowano 2012-11-03 12:24
Autor Wiadomość
pawelex
Temat założony przez niniejszego użytkownika
[C++] Liczby ujemne
» 2012-11-02 15:45:39
Siema,

Mam zadanko http://main.edu.pl/pl/archive/ilocamp/2010/zna. I mam problem ponieważ nie wiem jak mam wypisywać liczby ujemne aby były one w nawiasach, np: (-5). Mój kod :
C/C++
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    float a, b;
    long int x, y, z;
    cin >> a >> b;
    x = a + b;
    y = a - b;
    z = a * b;
   
   
    if( z == x || z == y || x == z || x == y || y == z || y == x ) {
        cout << "NIE";
    }
    else
    {
       
        if( x > y && x > z )
        {
            cout << a << "+" << b << "=" << x;
        }
        if( y > z && y > z )
        {
            cout << a << "-" << b << "=" << y;
        }
        if( z > x && z > y )
        {
            cout << a << "*" << b << "=" << z;
        }
    }
   
   
    return 0;
}
P-68212
m4tx
» 2012-11-02 16:05:04
Hmm... Zrób sobie funkcję, np.:
C/C++
string formatuj( int n ) {
    if( n > 0 ) {
        return int2String( n );
    } else {
        return "(" + int2String( n ) + ")";
    }
}
(oczywiście musisz sobie dodatkowo napisać funkcję int2String)
Można też za pomocą operatora trójkowego bezpośrednio w cout (aczkolwiek robi się burdel):
C/C++
cout <<( n < 0 ? "(": "" ) << n <<( n < 0 ? ")"
    : "" );
P-68218
pawelex
Temat założony przez niniejszego użytkownika
» 2012-11-02 16:13:41
Coś mi nie wychodzi bo wypisuje sam wynik. (Korzystałem z tego drugiego kodu)
P-68221
m4tx
» 2012-11-02 16:26:30
Jesteś pewien? Mi działa dobrze :)
C/C++
#include <iostream>
using namespace std;

int main() {
    int n = - 214;
    cout <<( n < 0 ? "(": "" ) << n <<( n < 0 ? ")"
        : "" );
}

m4tx@m4tx-EP35-DS4:~/Pulpit$ ./omg
(-214)

// Faila jeszcze zrobiłem. Zamień wszystkie NULL-e na "" w tym kodzie co dałem, bo dla liczb nieujemnych nie będzie działać :P Poprawiłem już w poście wyżej.
P-68224
pawelex
Temat założony przez niniejszego użytkownika
» 2012-11-03 11:28:44
A jak zrobić aby wyświetliło na wyjściu:     6-(-5)=11
P-68314
m4tx
» 2012-11-03 11:35:10
Tak jak napisałem wyżej? :)
Z tym że czytelniej będzie z funkcją którą podałem. Można też jeszcze tak:
C/C++
void formatuj( int n ) {
    cout <<( n < 0 ? "(": "" ) << n <<( n < 0 ? ")"
        : "" );
}
P-68315
pawelex
Temat założony przez niniejszego użytkownika
» 2012-11-03 11:55:44
C/C++
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    float a, b;
    long int x, y, z;
   
    cin >> a >> b;
    x = a + b;
    y = a - b;
    z = a * b;
   
    if( z == x || z == y || x == z || x == y || y == z || y == x ) {
        cout << "NIE";
    }
    else
    {
       
        if( x > y && x > z )
        {
            cout <<( a < 0 ? "(": "" ) << a <<( a < 0 ? ")"
                : "" ) << "+" <<( b < 0 ? "("
                : "" ) << b <<( b < 0 ? ")"
                : "" ) << "=" <<( x < 0 ? "("
                : "" ) << x <<( x < 0 ? ")"
                : "" );
        }
        if( y > z && y > z )
        {
            cout <<( a < 0 ? "(": "" ) << a <<( a < 0 ? ")"
                : "" ) << "-" <<( b < 0 ? "("
                : "" ) << b <<( b < 0 ? ")"
                : "" ) << "=" <<( y < 0 ? "("
                : "" ) << y <<( y < 0 ? ")"
                : "" );
        }
        if( z > x && z > y )
        {
            cout <<( a < 0 ? "(": "" ) << a <<( a < 0 ? ")"
                : "" ) << "*" <<( b < 0 ? "("
                : "" ) << b <<( b < 0 ? ")"
                : "" ) << "=" <<( z < 0 ? "("
                : "" ) << z <<( z < 0 ? ")"
                : "" );
        }
       
    }
   
   
    return 0;
}

Mam 2 pytanie jeszcze:

1) Czy można skrócić ten kod w cout?
2) Po wpisaniu -6 i 5 wyświetla mi (-6)+5=(-1)(-6)-5=(-11) a powinno (-6)+5=(-1). Co jest nie tak?

PS Dzięki wielkie m4tx.
P-68316
m4tx
» 2012-11-03 12:06:47
1) Czy można skrócić ten kod w cout?
Tak, za pomocą funkcji, którą podałem.

2) Po wpisaniu -6 i 5 wyświetla mi (-6)+5=(-1)(-6)-5=(-11) a powinno (-6)+5=(-1). Co jest nie tak?
C/C++
if( x > y && x > z )
{
    // ...
}
if( y > z && y > z )
{
    // ...
}
if( z > x && z > y )
{
    // ...
}
Te ify są bez sensu w ogóle :) Sprawdzaj znak działania, który wpisał użytkownik i powinno być ok.
P-68318
« 1 » 2
  Strona 1 z 2 Następna strona