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

Zamiana systemu dziesiętnego na binarny wierszy liczb wczytanych z pliku (folderu:"dane\\dane1.txt") do tablicy.

Object Storage Arubacloud
0 głosów
460 wizyt
pytanie zadane 6 stycznia 2020 w C i C++ przez Ad6559 Nowicjusz (120 p.)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <sstream>
#include <math.h>

using namespace std;

int main()
{

int tablica[500]={0};
int tmp=0;
ifstream liczby("dane\\dane1.txt");

if (!liczby)
{

    cout<<"error";
    getchar();
    return 1;

}

while(!liczby.eof())
{
      liczby>>tablica[tmp++];
}


 liczby.close();


  string wynik;

  for(int i=0;i<tmp;i++)
  {
  
      wynik.insert( wynik.begin(), tablica[i] % 2 + '0');

      tablica[i] /= 2 ;
      
      cout<<wynik<<endl;
       
      }
     

    return 0;

}

Po wczytaniu pliku z danymi do tablicy, próba zamiany systemu liczb w niej zapisanej poprzez sposób w powyższym programie kończy się wynikami różniącymi się od prawidłowych danych jakie powinny być po zastosowaniu zamiany, co widać w linkach poniżej:

Wynik w kompilatorze przez wykonany mój program: (piszę ręcznie przez słabą rozdzielczość screena)

0
10
010
0010
00010
000010

Bardzo chciałbym prosić o pomoc jak powinien wyglądać prawidłowy kod i w czym tkwi problem w moim.

Z góry dzięki za pomoc ;)

1 odpowiedź

+1 głos
odpowiedź 6 stycznia 2020 przez KumberTwo Dyskutant (8,270 p.)

Najłatwiej stworzyć funkcję np. zamiana

void zamiana(int liczba)
{
	if(liczba>0)
	{
		dec_to_bin(liczba/2);
		cout<<liczba%2;
	}
}

I wywołaj tę funkcję dla poszczególnych liczb w pliku .txt.

komentarz 6 stycznia 2020 przez Ad6559 Nowicjusz (120 p.)

Dzięki wielkie, a masz może jakiś pomysł odnośnie tego, jak by wyglądał zapis wyników tej funkcji do np. folderu: "wynik\\wynik1.txt" ? Chodzi mi głównie o to w jaki sposób mogę otrzymane wyniki binarne liczb dziesiętnych(dzięki funkcji void) pobranych z pliku zapisać do folderu wynikowego. A oto kod który udało mi się na razie otrzymać (do momentu wyświetlenia danych na ekran):

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <sstream>
#include <time.h>
using namespace std;


void zamiana(int liczba)
{
	string wynik;

	
		while (liczba) {
			wynik = (liczba % 2 ? "1" : "0") + wynik;
			liczba /= 2;
		}
		cout << wynik << endl;
		
}



int main()
{
	string nazwa1;
	string nazwa2;
	string koniec = ".txt";	
	string plik1 = "dane\\dane";
	string wynik1 = "wynik\\wynik";
	
	
	int n;
	cout << "Podaj ile plikow wczytac z folderu: " << endl;
	cin >> n;
	
	for (int i = 1; i <= n; i++)
	{
		stringstream ss;
		
		ss << i;
		
		nazwa1 = plik1 + ss.str() + koniec;
		nazwa2 = wynik1 + ss.str() + koniec;
		
		cout << nazwa1 <<endl;
		cout << nazwa2 <<endl;
		
		fstream plik;
		int tablica[500] = { 0 };
		int tmp = 0;
		plik.open(nazwa1, ios::in);
		if (plik.good() == true)
		{
			while (!plik.eof())
			{

				plik >> tablica[tmp++];

		
			}
			//fstream plik2;
			//plik2.open(nazwa2);
			
			for (int i = 0; i < tmp-1; i++)
			{
				zamiana(tablica[i]);	
				
			}
			
			plik.close();
			//plik2.close(); 

		}

	

		system("pause");
	}
}

Z góry dzięki ;)

komentarz 12 stycznia 2020 przez KumberTwo Dyskutant (8,270 p.)
Niestety, ale nie do końca rozumiem sposób odczytu i zapisu plików w c++, ale z tego co wiem to jest cały odcinek o tym na kanale pasja informatyki. Powodzenia.

Podobne pytania

+1 głos
2 odpowiedzi 659 wizyt
pytanie zadane 2 sierpnia 2020 w C i C++ przez RufinB Obywatel (1,830 p.)
0 głosów
2 odpowiedzi 118 wizyt
0 głosów
1 odpowiedź 834 wizyt
pytanie zadane 22 kwietnia 2020 w C i C++ przez Atman Użytkownik (810 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...