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

[C++] Problem z kalkulatorem

Ostatnio zmodyfikowano 2016-03-13 19:35
Autor Wiadomość
ZielonyCplusplus
Temat założony przez niniejszego użytkownika
[C++] Problem z kalkulatorem
» 2016-03-13 16:11:20
Witam, jestem początkujący i mam jak dla mnie wielki problem i nie wiem jak mu zaradzic, siedzę nad tym cały dzień. Otóż piszę program który ma liczby z dziesietnego zamienic na inne systemy i problem jest taki że za każdym kolejnym razem poprzednie wyniki nie znikają przy obecnym. I nie wiem jak w tym programie dodać funkcje, aby wypisywała wyniki do notatnki, z góry dziękuję :)


#include <iostream>
#include <fstream>
#include <cstdlib>
#include <conio.h>


using namespace std;

int liczba[100],i=0,j;
char a;
int n;
int main()
{
while(true)
{
cout<<endl<<endl;
cout<<"Na jakim system liczbowy chcesz zamienic swoja liczbe?"<<endl;
cout<<"MENU GLOWNE"<<endl;
cout<<"-----------------"<<endl;
    cout<<"1. koniec programu"<<endl;   
cout<<"2. dwojkowy"<<endl;
cout<<"3. trojkowy"<<endl;
cout<<"4. czworkowy"<<endl;
cout<<"5. piatkowy"<<endl;
cout<<"6. szostkowy"<<endl;
cout<<"7. siodemkowy"<<endl;
cout<<"8. osemkowy"<<endl;
cout<<"9. dziewiatkowy"<<endl<<endl;

    a=getch();
cout<<"Podaj liczbe:   ";
cin>>n;

switch(a)
{
case '1': exit(0);
break;

case '2':
{

while(n>0)
     {
    liczba=n%2;
i++;
n=n/2;
        }
cout<<"Liczba w systemie dwojkowym to:   ";
for(j=i-1; j>=0; j--)

        {
    cout<<liczba[j];
    }

    }
    break;
   
   case '3':

    {
while(n>0)
    {
    liczba=n%3;
i++;
n=n/3;
    }
       cout<<"Liczba w systemie trojkowym to:   "<<endl;
        for(j=i-1; j>=0; j--)
        {
    cout<<liczba[j];
    }
    }
 break;
   
    case '4':
    {
while(n>0)
    {
    liczba=n%4;
i++;
n=n/4;
    }
       cout<<"Liczba w systemie czworkowym to:   "<<endl;
        for(j=i-1; j>=0; j--)
        {
    cout<<liczba[j];
    }
    }
 break;
   
case '5':
    {
while(n>0)
    {
    liczba=n%5;
i++;
n=n/5;
    }
       cout<<"Liczba w systemie piatkowy to:   "<<endl;
        for(j=i-1; j>=0; j--)
        {
    cout<<liczba[j];
    }
    }
 break;
 
  case '6':
    {
while(n>0)
    {
    liczba=n%6;
i++;
n=n/6;
    }
       cout<<"Liczba w systemie szostkowym to:   "<<endl;
        for(j=i-1; j>=0; j--)
        {
    cout<<liczba[j];
    }
    }
 break;
 
  case '7':
    {
while(n>0)
    {
    liczba=n%7;
i++;
n=n/7;
    }
       cout<<"Liczba w systemie siodemkowym to:   "<<endl;
        for(j=i-1; j>=0; j--)
        {
    cout<<liczba[j];
    }
    }
 break;
 
  case '8':
    {
while(n>0)
    {
    liczba=n%8;
i++;
n=n/8;
    }
       cout<<"Liczba w systemie osemkowym to:   "<<endl;
        for(j=i-1; j>=0; j--)
        {
    cout<<liczba[j];
    }
    }
   break; 
  
    case '9':
    {
while(n>0)
    {
    liczba=n%9;
i++;
n=n/9;
    }
       cout<<"Liczba w systemie dziewiatkowym to:   "<<endl;
        for(j=i-1; j>=0; j--)
        {
    cout<<liczba[j];
    }
    }
   
    default: cout<<"Nie ma takiej opcji!"<<endl;
    break;


}
    getchar();getchar();
    system("cls");
    }
    return 0;
}
P-145976
mateczek
» 2016-03-13 16:53:08
1. wstawiaj kod w znaczniki
[cpp][/cpp]


2 .
aby wypisywała wyniki do notatnki,
 co autor miał na myśli ?? czyszczenie ekranu można system("cls")
3 . nie powtarzaj 10 razy tego samego zrób funkcję!!!


C/C++
#include <iostream>
#include<string>
using namespace std;
string toStr( int liczba, int base ) {
    string wynik = "";
    while( liczba ) {
        int cyfra = liczba % base;
        if( cyfra < 10 ) wynik.insert( wynik.begin(), cyfra + '0' ); // do dziesiętnego włącznie
        else
             wynik.insert( wynik.begin(), cyfra - 10 + 'A' ); // systemy powyżej dziesiętnego mają litery
       
        liczba /= base;
    }
    return wynik;
}

int main()

{
    int base;
    int liczba;
    while( cin >> liczba >> base ) {
        system( "cls" ); //czyszczenie ekranu np.
        cout << toStr( liczba, base ) << endl; // zamiana na dowolny system
       
    }
   
}
P-145977
ZielonyCplusplus
Temat założony przez niniejszego użytkownika
» 2016-03-13 17:05:38
Napisałem tak:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <conio.h>


using namespace std;

int liczba[100],i=0,j;
char a;
int n,b;
int main()
{
while(true)
{
cout<<endl<<endl;
cout<<"Na jakim system liczbowy chcesz zamienic swoja liczbe?"<<endl;
cout<<"MENU GLOWNE"<<endl;
cout<<"-----------------"<<endl;
    cout<<"1. koniec programu"<<endl;   
cout<<"2. dwojkowy"<<endl;
cout<<"3. trojkowy"<<endl;
cout<<"4. czworkowy"<<endl;
cout<<"5. piatkowy"<<endl;
cout<<"6. szostkowy"<<endl;
cout<<"7. siodemkowy"<<endl;
cout<<"8. osemkowy"<<endl;
cout<<"9. dziewiatkowy"<<endl<<endl;
   
    cout<<"Wybierz:"<<endl;
    cin>>b;
   
     if(b==1)
    {
    cout<<"KONIEC PROGRAMU!";
    exit(0);
}
else
       
    cout<<"Podaj liczbe:"<<endl;
    cin>>n;
   
    if(b==1)
    {
    cout<<"KONIEC PROGRAMU!";
    exit(0);
}
else
    {
while(n>0)
    {
    liczba=n%b;
i++;
n=n/b;
    }
       cout<<"Liczba w systemie "<<b<<"-kowym to:  ";
        for(j=i-1; j>=0; j--)
        {
    cout<<liczba[j];
    }
    }
    getchar();getchar();
    system("cls");




}

  
 
    return 0;
   
}
P-145978
mateczek
» 2016-03-13 17:23:43
chcesz wyniki do pliku proszę.
1. odpalasz program i wpisujesz dwie liczby po spacji np:
15 2

Będzie to liczba 15 w kodzie dwójkowym. da wynik 1111
analogicznie:
15 16

liczba 15 w kodzie szesnastkowym da wynk F

2. podanie literki zakończy program
3. sprawdzasz plik mojewyniki.txt

 
C/C++
#include <iostream>
#include<fstream>
#include<string>
using namespace std;
string toStr( int liczba, int base ) {
    string wynik = "";
    while( liczba ) {
        int cyfra = liczba % base;
        if( cyfra < 10 ) wynik.insert( wynik.begin(), cyfra + '0' );
        else
             wynik.insert( wynik.begin(), cyfra - 10 + 'A' ); // systemy powyrzej dziesiętnego mają litery
       
        liczba /= base;
    }
    return wynik;
}

int main()

{
    int base, liczba;
    fstream plik;
    plik.open( "mojewyniki.txt", std::ios::out ); // nie sprawdzam poprawności otwarcia żeby mniej kodu
   
    while( cin >> liczba >> base ) { // pętla się wykonuje dopóki podajesz prawdziwe dane. błędna dana zakończy
        plik << "liczba " << liczba << " w systemie " << base << " = " << toStr( liczba, base ) << endl; //zapis do pliku
    }
    plik.close();
}
P-145979
ZielonyCplusplus
Temat założony przez niniejszego użytkownika
» 2016-03-13 17:32:05
Dziękuję, lecz chciałbym się dowiedzieć jak do tego mojego konkretnego programu zastosować wpisywanie do pliku :)
I jeszcze mam taki program, że wyniki się kumulują po kilku obliczeniach...
Dziekuje za pomoc!

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <conio.h>


using namespace std;

int liczba[100],i=0,j;
char a;
int n,b;
int main()
{

while(true)
{
cout<<endl<<endl;
cout<<"Na jakim system liczbowy chcesz zamienic swoja liczbe?"<<endl<<endl;
cout<<"MENU GLOWNE"<<endl;
cout<<"-----------------"<<endl;
    cout<<"1. koniec programu"<<endl;   
cout<<"2. dwojkowy"<<endl;
cout<<"3. trojkowy"<<endl;
cout<<"4. czworkowy"<<endl;
cout<<"5. piatkowy"<<endl;
cout<<"6. szostkowy"<<endl;
cout<<"7. siodemkowy"<<endl;
cout<<"8. osemkowy"<<endl;
cout<<"9. dziewiatkowy"<<endl<<endl;
   
    cout<<"Wybierz:"<<endl;
    cin>>b;
   
     if(b==1)
    {
    cout<<"KONIEC PROGRAMU!";
    exit(0);
}
else
       
    cout<<"Podaj liczbe:"<<endl;
    cin>>n;

    {
while(n>0)
    {
    liczba=n%b;
i++;
n=n/b;
    }
       cout<<"Liczba w systemie "<<b<<"-kowym to:  ";
        for(j=i-1; j>=0; j--)
        {
    cout<<liczba[j];
    }
    }
    getchar();getchar();
    system("cls");

}
 
    return 0;
   
}
P-145980
carlosmay
» 2016-03-13 19:35:13
1. wstawiaj kod w znaczniki
Jak grochem o ścianę.
P-145983
« 1 »
  Strona 1 z 1