Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
C++

Początki C++ - mały program (float to int)

c++

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
11 odpowiedzi w tym temacie

#1 KariiO

    Super Hero

  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 12.09.2012 20:19

Witam, mam pewien problem a mianowicie chciałbym się dowiedzieć czy zmienna a ma coś po przecinku czy jednak nie...a sposób miałem taki:

#include <iostream>
#include <cstdlib>

using namespace std;
int ilosc_przedmiotow;
float a;
//int result = (int)floor(a);
//float f = 12.345;
int b = (int)a;

int main()
{


system("COLOR 2"); // Wiem, dziala tylko w Windowsie

cout << "*************************************************\n"
<< "* *\n"
<< "* Witaj w programie obliczajacym Twoja srednia! *\n"
<< "* *\n"
<< "*************************************************\n\n\n";

cout << "Podaj swoja ilosc przedmiotow ktore masz w szkole: ";
cin >> a;
if (a-b==0) cout <<"a jest calncalnieie jest calkowita\n";kowita\n";
else if (a-b!=0) cout <<"a nie jest calkowita\n";

system("PAUSE"); // Wiem, dziala tylko w Windowsie
return 0;
}
jakieś pomysły dlaczego nie śmiga ?
  • +
  • -
  • 0

#2 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 12.09.2012 20:39

#include <iostream>

using namespace std;

main(){
    float g_Fl;

    cin>>g_Fl;

    int g_Int = int(g_Fl);

    if(g_Int == g_Fl){
        cout<<"Jest calkowita <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/wink.png' class='bbc_emoticon' alt=';)' />\n";
    }
    else{
        cout<<"Nie jest calkowita.\n";
    }

    system("pause");
}
Stworzyłeś zmienną b i przypisałeś jej wartość int(a), czyli uznajmy, że float a = 0; b = int(a); b = 0;
Potem wpisałeś a, uznajmy 25 więc wykonywało się obliczenie 25 - 0 == 0, jest to fałszywe stwierdzenie, zmienną int trzeba stworzyć po wpisaniu liczby, lub odwołać się do niej po wpisaniu tej liczby. W moim przypadku stworzyłem zmienną int po wpisaniu liczby ;)
  • +
  • -
  • 1

If you can dream it, you can do it.


#3 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 12.09.2012 21:13

Dzięki za kod :) +
Okej u siebie przypisywałem b do a ale skoro a bym podał jako 2,5 to b powinno być chyba tylko 2, tak ? Czy źle myśle ?
  • +
  • -
  • 0

#4 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 12.09.2012 21:19

Tak, ale musiałbyś przypisać zmiennej a wartość 2.5, aby zmienna b była równa 2, czyli taki mały przykład Ci dam :
#include <iostream>

using namespace std;

main(){
    float a = 2.5;
    int b = int(a);

    cout<<a<<" | "<<b<<"\n";

    system("pause");
}
Teraz zmienna b, ma wartość 2, ponieważ zmienna float miała wartość 2.5 ;)
  • +
  • -
  • 1

If you can dream it, you can do it.


#5 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 12.09.2012 21:30

Okej dzięki wielkie za wszystko :)

Ostatnia sprawa bo dopiero zaczynam z C++, jak chcę podać 3,5 to normalnie w aplikacji muszę dać 3.5 ? . to nie to samo co , ?
  • +
  • -
  • 0

#6 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

  • Postów:1 485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 12.09.2012 21:46

Przecinek to separator wyliczeniowy, a kropka to znak używany przy zapisywaniu liczb rzeczywistych ( oraz jako operator wyłuskania ), takie standardy.
  • +
  • -
  • 0

marwit-0.png


#7 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 13.09.2012 20:48

Stworzyłem coś takiego:

#include <iostream>
#include <cstdlib>

using namespace std;
int ilosc_przedmiotow;
float a;
//int result = (int)floor(a);
//float f = 12.345;
int b = (int)a;
bool calkowitaczynie;
float wynik;
main(){
float g_Fl;

cin>>g_Fl;

int g_Int = int(g_Fl);

if(g_Int == g_Fl){
cout<<"Jest calkowita <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/wink.png' class='bbc_emoticon' alt=';)' />\n";

}
else{
cout<<"Nie jest calkowita.\n";
}

for(int x = 1; x <g_Fl; x++)
{
wynik = g_Fl/x;
int x = int(wynik);
if(x == wynik && g_Fl!=x)
{
cout << g_Fl
<< "|"
<< wynik
<< "\n" ;
}
g_Fl = wynik ;
x=0;
}
system("pause");
}
prosty programik który miał liczyć w słupku tzn :
64|2
32|2
16|2
8|2
4|2
2|2
1|
ale coś nie wychodzi, wie ktoś gdzie może być problem ?
  • +
  • -
  • 0

#8 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 13.09.2012 21:50

Jestem początkowym, sorry :P
Ale powiedz mi co źle zrobiłem prócz tego że można optymalniej itd. itd...
  • +
  • -
  • 0

#9 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 13.09.2012 22:16

Teraz ten kod powinien być poprawny, tutaj aby poznać dzielniki liczby trzeba było dzielić liczbę modułowo, i jeśli reszta nie jest równa 0 dodawać do dzielnika + 1. W Twoim przypadku nie jest potrzebne float, wystraczy int, oraz potem double. Tą pętlą nie podzelisz tego musisz dzielić modułowo liczbę wpisaną, przez wartość pętli.
#include <iostream>
#include <math.h>

using namespace std;

int g_First,
    g_Value = 2;

main(){
    cin>>g_First;
    if(g_First > 1){
         while(g_Value <= sqrt(double(g_First))){
            while(!(g_First % g_Value)){
                g_First /= g_Value;
                cout<<g_Value<<"\n";
            }
            if(g_First == 1){
                break;
            }
            g_Value++;
        }
        if(g_First > 1){
            cout<<g_First<<"\n";
        }
    }
    system("pause");
}

https://www.google.p...iw=1680&bih=959
G[o]Q (14.09.2012 01:17):
przeciez dostal dobry kod 2 posty wyzej

  • +
  • -
  • 0

If you can dream it, you can do it.


#10 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 14.09.2012 16:00

coś nie śmiga :D
  • +
  • -
  • 0

#11 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 14.09.2012 16:21

Dołączona grafika
2 * 3 * 3 * 7 = 126, obok g_Value wyświetlaj sobie także g_First i zobaczysz wtedy dlaczego tak się dzieje ;)
A jeśli chcesz zobaczyć tak jakby w belce to podmień sobie tego while i sprawdź wtedy ;)
while(!(g_First % g_Value)){
	cout<<g_First<<" | "<<g_Value<<"\n";
        g_First /= g_Value;
}

  • +
  • -
  • 0

If you can dream it, you can do it.


#12 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 14.09.2012 21:46

Poprawiłem algorytm generowania, teraz wszystko działa. Program nie ma już problemu z liczbą pierwszą lub z liczbą nieparzystą, także poprawiłem wygląd wyświetlania się tych czynników pierwszych liczby są teraz one w belce ;)
#include <iostream>

using namespace std;

int g_First,
        g_Value = 2;

main(){
    cin>>g_First;
    if(g_First > 1){
        while(g_Value <= g_First){
            while(!(g_First % g_Value)){
                cout<<g_First<<" | "<<g_Value<<"\n";
                g_First /= g_Value;
            }
            g_Value++;
        }
    }
    cout<<"1\n";
    system("pause");
}
Dołączona grafika
  • +
  • -
  • 0

If you can dream it, you can do it.






Również z jednym lub większą ilością słów kluczowych: c++

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych