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

Matura 2017 czerwiec

VPS Starter Arubacloud
0 głosów
2,125 wizyt
pytanie zadane 11 kwietnia 2020 w C i C++ przez veryape Użytkownik (580 p.)

Witam, mam straszny problem z podpunktem 4.2 z czerwcowej matury z 2017 roku. Próbowałem tak na chama wyciągać wszystkie cyfry po kolei z liczb i je porównywać, ale wynik jest błędny, męczę się z tym zadaniem już od kilku dni i nie mam pojęcia jak je ugryźć.
https://arkusze.pl/matura-informatyka-2017-czerwiec-poziom-rozszerzony/
Tutaj link do arkusza oraz plików, z góry dziękuję za odpowiedź.

1 odpowiedź

0 głosów
odpowiedź 11 kwietnia 2020 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Nie wiem, czy to najlepsze rozwiązanie, ale możesz spróbować zrobić coś takiego.

Utwórz po jednej 10 elementowej tablicy bool dla każdej z tych liczb. Przeiteruj po ich cyfrach, jeżeli dana cyfra wystąpi, to ustaw odpowiedni element tablicy na true (np. dla cyfry 7 będzie to tab[7]). Po całym takim procesie będziesz miał informacje na temat wystąpień cyfr w danej liczbie.

Na końcu wystarczy jeszcze tylko porównać dwie tablice. wink

komentarz 11 kwietnia 2020 przez veryape Użytkownik (580 p.)

Czyli jak rozumiem zrobić coś na zasadzie

Liczba = tablica[i][0]

Int temp;
While(liczba){
 temp=liczba%10;
 liczba /=10;
 Tabbool[temp]=true; 
}

I tak samo dla tablica[i][1] i poròwnać 2 bool tablice czy mają identycznie te same elementy? 

Wybacz, ze kod taki uproszczony ale aktualnie korzystam z urządzenia mobilnego, poniewaz jestem poza domem.

komentarz 11 kwietnia 2020 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Tak, mniej więcej coś takiego (nie powinno jednak być odwrotnie? tablica[1][i]).

Ja napisałem taki kod w C (nie byłem pewien w czym ty piszesz, ale to raczej nie ma wielkiego znaczenia).

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define BASE 10

void get_number_digits(unsigned int number, bool *digits) {
	while (number > 0) {
		unsigned int digit = number % BASE;
		digits[digit] = true;
		number /= BASE;
	}
}

bool use_the_same_digits(unsigned int number1, unsigned int number2) {
	bool digits1[BASE] = {0};
	get_number_digits(number1, digits1);
	
	bool digits2[BASE] = {0};
	get_number_digits(number2, digits2);

	// sizeof(digits1) == sizeof(digits2)
	return memcmp(digits1, digits2, sizeof(digits1)) == 0;
}

int main(void) {
	unsigned int number1;
	printf("Podaj pierwszą liczbę: ");
	scanf("%u", &number1);

	unsigned int number2;
	printf("Podaj drugą liczbę: ");
	scanf("%u", &number2);

	printf(
		"Liczby %d i %d %sużywają wyłącznie tych samych cyfr\n",
		number1,
		number2,
		use_the_same_digits(number1, number2) ? "" : "nie "
	);

	return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 698 wizyt
pytanie zadane 11 maja 2021 w C i C++ przez nzepik324 Początkujący (260 p.)
0 głosów
1 odpowiedź 1,309 wizyt
0 głosów
1 odpowiedź 1,022 wizyt
pytanie zadane 10 maja 2021 w C i C++ przez nzepik324 Początkujący (260 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...