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

Problem z zadaniem odnośnie liczb pechowych.

Object Storage Arubacloud
0 głosów
117 wizyt
pytanie zadane 13 maja 2020 w C i C++ przez Quba Użytkownik (870 p.)

Problem polega na tym, że nie jestem w stanie dostrzec błędu. Program odpala się ale nie uzyskuje pożądanego efektu, a mianowicie.

Zadanie:

Liczbę naturalną nazywamy pechową, jeśli spełnia jednocześnie następujące dwa warunki:
• Jej suma cyfr wynosi 13
• Zawiera co najmniej raz w swoim zapisie dziesiętnym ciąg 13 jako spójny fragment
(czyli zawiera cyfry 1 i 3 stojące obok siebie)
Np. liczby 139, 33133 są pechowe, natomiast 35 oraz 553 nie są liczbami pechowymi.
Napisz program który:
- wyświetli wszystkie pechowe liczby trzycyfrowe,
- wczyta liczbę naturalną N (1<=N<=1010), wyznaczy ile jest liczb pechowych nie
przekraczających N i wypisze ten wynik.

Dokładnie chodzi mi o punkt:

- wczyta liczbę naturalną N (1<=N<=1010), wyznaczy ile jest liczb pechowych nie
przekraczających N i wypisze ten wynik.

Poniżej zamieszczam program, działa on tylko jeśli zakres ustanowię od 1 do 139.

Jeśli koniec zakresu zostanie wylosowany tak jak prosi nas zadanie to nie wyświetla się nic, ponadto program się nie kończy.

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <windows.h>
using namespace std;
int funkcja_pomocnicza(int i, int &sumka);
bool funkcja_pomocnicza1(int i, int &sumka);

//================================  WYŚWIETLANIE 3-CYFROWYCH LICZB PECHOWYCH  ============================================================

int main()
{
	int x=0, sumka=0, d=0, l=0;
	
	for(int i=139; i<=999; i++)
	{
		if((i/100)+(i%10)+((i/10)%10)==13)
		{		
		if((((i/100)==1)&&((i/10)%10)==3)||((((i/10)%10)==1)&&(i%10)==3))
		cout<<i<<" ";
	    }
	    
	}

//==============================================  LOSOWANIE  ================================================
	
	cout<<endl;
	cout<<"To liczby pechowe trzycyfrowe. \nZaraz program wyswietli liczby pechowe od 1 do liczby wylosowanej.";
	Sleep(1000);
	
	system("cls");
	
	srand(time(NULL));
	x=1+rand()%(10000000000-1+1);
    
	system("cls");
    
	cout<<"Wylosowana liczba: "<<endl;
	cout<<x;
	Sleep(1000);
	system("cls");
    
//=================================  ZBIÓR LICZB PECHOWYCH OD 1 DO LICZBY N  ========================================================

	
for(int i=1; i<=x; i++)
{		
	int sumka=0;
	sumka=0;

	
	if((funkcja_pomocnicza(i,sumka)==13)&&(funkcja_pomocnicza1(i,sumka)==1))
	{
		++l;
	}
}
cout<<l;
return 0;
}

//===========================================  FUNKCJA POMOCNICZA  ==================================================================	

int funkcja_pomocnicza(int i, int &sumka)
{	
    do
	{
	sumka=sumka+i%10;
	i=i/10;
	}
	while(i!=0);
	
	return sumka;
}

bool funkcja_pomocnicza1(int i, int &sumka)
{
if(sumka==13)
{
	do
    {	
	if(i%10==3)
	{
		if(((i/10))%10==1)
		{
			return 1;
		}
	}
	else
	{
	i=i/10;
    }
    }
    while(i!=0);

return 0;  
}
}

 

1 odpowiedź

0 głosów
odpowiedź 13 maja 2020 przez Asertywny Mądrala (5,430 p.)
wybrane 13 maja 2020 przez Quba
 
Najlepsza
1, Napisz funkcję `sumsToThirteen(int n)`, która zwraca `true` jeśli cyfry liczby `n` sumują się do 13, a `false` w przeciwnym wypadku

2. Napisz funkcję `hasThirteen(int n)`, która zwraca `true` jeśli cyfra zawiera w sobie blok `13`, a false w przeciwnym wypadku

3. Napisz funkcję `isUnlucky(int n)`, która za pomocą poprzednich funkcji zwróci true, jeśli liczba jest pechowa oraz false wpp.

4. W funkcji main przechowuj counter. Przeiteruj się po całym zakresie i dla każdej liczby z niego sprawdź, czy jest pechowa (wywołaj isUnlucky). Jeśli tak - zwiększ counter

Jeśli chcesz dogłębniejszej pomocy, poproszę kody dla poszczególnych funkcji z wyjaśnieniem, co nie działa.
komentarz 13 maja 2020 przez Quba Użytkownik (870 p.)

W porządku dziękuję za pomoc smiley

Podobne pytania

0 głosów
1 odpowiedź 129 wizyt
pytanie zadane 5 sierpnia 2020 w Python przez Marak123 Stary wyjadacz (11,190 p.)
0 głosów
1 odpowiedź 239 wizyt
pytanie zadane 23 grudnia 2016 w Ruby przez Newperty Początkujący (280 p.)
0 głosów
2 odpowiedzi 192 wizyt
pytanie zadane 21 sierpnia 2015 w C i C++ przez Anonimowy Nowicjusz (120 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

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

...