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

Zadanie "Liczby inaczej" z matury 2011

Object Storage Arubacloud
0 głosów
1,008 wizyt
pytanie zadane 14 lipca 2019 w C i C++ przez Kazek Początkujący (460 p.)
edycja 14 lipca 2019 przez Kazek

Cześć, przygotowuję się samodzielnie do matury 2020 z informatyki i rozwiązuję zadania ze starszych matur.

Stanąłem na maturze 2011 zadanie 6.b, ponieważ mój program cały czas pokazuje zły wynik, a ja głowię się co może być nie tak, a powoli kończą mi się pomysły dlatego piszę do was. 

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int bin2dec(string number);
int main()
{
	fstream plik;
	ofstream zapisz("wyniki6.txt", ios::out);
	plik.open("liczby.txt", ios::in);
	string liczba;
	int max = 0;
	if (plik.good() == true)
	{
		for (int i = 0; i < 1000; i++)
		{
			plik >> liczba;		
			bin2dec(liczba);
			for (int j = 0; j < 1000; j++)
			{
				int k = atoi(liczba.c_str()); //zamiana string liczba na integral
				if (max < k)
				{
					max = k;
				}
			}
		}
		zapisz << "Najwieksza liczba w tym pliku to " << max;
	}
	else
	{
		cout << "Nie." << endl;
	}
	return 0;
}
int bin2dec(string number) //zamiana z systemu binarnego na dziesietny
{
	unsigned int dec = 0; 
	int j = 0;
	for (int i = number.size() - 1; i >= 0; i--)
	{
		if (number[i] == '1')
		{
			dec += pow(2, j);
		}
		j++;
	}
	return dec;
}

Według mnie wszystko jest okej, ale program pokazuje liczbę 2147483647 zamiast 64502.

komentarz 14 lipca 2019 przez tkz Nałogowiec (42,000 p.)
Podaj treść zadania.
komentarz 14 lipca 2019 przez tkz Nałogowiec (42,000 p.)
Zrobił bym to tak. Wczytał cały plik do Vectora stringów.

a) sprawdził końcówki liczb, jeżeli ostatnia liczba to 0, to jest parzysta

b) użył std::biteset do prze konwertowania

c) użył std::count
komentarz 14 lipca 2019 przez RafalS VIP (122,820 p.)

A ja bym to w pythonie napisał:

print(max([int(x,base=2) for x in open("liczby.txt")]))

1 odpowiedź

+1 głos
odpowiedź 14 lipca 2019 przez niezalogowany
wybrane 14 lipca 2019 przez Kazek
 
Najlepsza
for (int i = 0; i < 1000; i++) {
    plik >> liczba;

    int k = bin2dec(liczba);
    if (max < k) {
        max = k;
    }
}

Uprościłem trochę kod:

#include <iostream>
#include <fstream>
#include <string>

int bin2dec(std::string const& number);

int main() {
	std::ifstream input("liczby.txt");
	std::ofstream output("wyniki6.txt");

	if (!input.is_open()) {
		std::cout << "Nie mozna otworzyc pliku :(\n";
		return 0;
	}

	std::string binary;
	int max = 0;

	while(input >> binary) {
		int decimal = bin2dec(binary);
		if (max < decimal) {
			max = decimal;
		}
	}

	output << "Najwieksza liczba (system dziesietny): " << max << "\n";
}

int bin2dec(std::string const& bin) {
	int dec = 0;
	for (std::size_t i = 0; i < bin.size(); i++) {
		dec = dec * 2 + bin[i] - '0';
	}
	return dec;
}

Pamiętaj, że w odpowiedzi musisz uwzględnić oba systemy.

Podobne pytania

0 głosów
2 odpowiedzi 1,838 wizyt
pytanie zadane 17 grudnia 2016 w C i C++ przez Krystek102 Bywalec (2,440 p.)
0 głosów
0 odpowiedzi 355 wizyt
pytanie zadane 13 maja 2021 w C i C++ przez szymal22 Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 2,812 wizyt
pytanie zadane 17 maja 2017 w C i C++ przez Szymon137 Nowicjusz (180 p.)

92,554 zapytań

141,399 odpowiedzi

319,535 komentarzy

61,938 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!

...