cyfry w liczbie mniejsze od 8

0

Funkcja ma zwrócić 1 jeżeli cyfry w podanej przez użytkownika liczbie są mniejsze niż 8. Co jest źle w warunkach mojej funkcji?

if(liczba>=10){
			liczba=liczba/10;
			if(liczba<8){
			return 1;
			}
		}
		if(liczba == 8 || liczba ==9){
			return 0;
		}
0

Co to znaczy "cyfry w podanej przez użytkownika liczbie są mniejsze niż 8"? Każda cyfra ma być mniejsza niż 8? Wystarczy jedna? Ich suma ma być mniejsza niż 8?

0

Jeżeli w liczbie występują tylko cyfry mniejsze niż 8 to funkcja ma zwrócić 1, a jeżeli chociaż jedna cyfra jest większa od 8 lub równa 8 to zwraca 0.

0

Nie kończ pętli po napotkaniu pierwszej liczby spełniającej warunek, tylko sprawdź wszystkie.

0

Właśnie próbuję to zrobić bez użycia pętli, bo tak jest w poleceniu, czyli rekurencyjnie, a dopiero zaczynam ten dział więc nie do końca wiem jak poprawnie to skonstruować

0

I gdzie masz tu rekursję w takim razie?

0

To łap w pętli i przerób na wywołania rekurencyjne.

while(liczba>0)
{
  if(liczba%10 >= 8) return 0;
  liczba/=10;
}
return 1;
0

jednak niee, trzeba tylko bez pętli

0

Bez pętli i bez rekurencji?
To dla jakiego zakresu liczb?

0

Użytkownik podaje liczbę typu unsigned long long, jeżeli w liczbie nie wystąpi cyfra większa lub równa 8 to funkcja powinna zwrócić 0, próbuje nadal, ale bez rezultatu

0
#include <stdio.h>

int check_octal_number(int n);

int main()
{
    int number;

    printf("Number: ");  
    
    scanf("%d", &number);  
    
    printf("There are octal numbers [yes:1]|[no:0]: %d", check_octal_number(number));
    
    return 0;
}

int check_octal_number(int n) {

   int result=1;
 
  	while(n != 0)
    {
        
        if(n%10==8||n%10==9)
        {
        	result = 0;
        	break;
		}
		n = n/10;
        
    }
     
   return result; 
}
0

Dobra, problem jednak sama rozwiązałam

1 użytkowników online, w tym zalogowanych: 0, gości: 1