Thread: I don't know why my code is wrong...

  1. #1
    Registered User
    Join Date
    Dec 2021
    Posts
    6

    I don't know why my code is wrong...

    Question:
    Example 1:
    Input: num = 14
    Output: 6
    Explanation:
    Step 1) 14 is even; divide by 2 and obtain 7.
    Step 2) 7 is odd; subtract 1 and obtain 6.
    Step 3) 6 is even; divide by 2 and obtain 3.
    Step 4) 3 is odd; subtract 1 and obtain 2.
    Step 5) 2 is even; divide by 2 and obtain 1.
    Step 6) 1 is odd; subtract 1 and obtain 0.
    Example 2:

    Input: num = 8
    Output: 4
    Explanation:
    Step 1) 8 is even; divide by 2 and obtain 4.
    Step 2) 4 is even; divide by 2 and obtain 2.
    Step 3) 2 is even; divide by 2 and obtain 1.
    Step 4) 1 is odd; subtract 1 and obtain 0.

    Code:
    
    
    Code:
    #include<stdio.h>
    
    
    int main(){
    
    
    int numberOfSteps(int num){
    
    
        int steps=0;
        printf("Please enter the number:");
        scanf("%d",&num);
        while(num!=0){
            num=(num%2==0)?num/2:num-1;
            ++steps;
            
        }return steps;}}

  2. #2
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,663
    > num=(num%2==0)?num/2:num-1;
    Try writing it out in long form.

    This looks like you found this on google.

    Oh, and C doesn't support nested functions.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  3. #3
    Registered User
    Join Date
    Dec 2021
    Posts
    6

    No value is shown after changing

    Quote Originally Posted by Salem View Post
    > num=(num%2==0)?num/2:num-1;
    Try writing it out in long form.

    This looks like you found this on google.

    Oh, and C doesn't support nested functions.
    Code:
    #include<stdio.h>
    
    
    int main(){
    
    
    int num;
    
    
    
    
    	int steps=0;
    	printf("Please enter the number:");
    	scanf("%d",&num);
    	while(num!=0){
    		num=(num%2==0)?num/2:num-1;
    		steps ++;}
    	
    	return steps;
    	}

  4. #4
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,663
    Maybe you should print steps, rather than returning steps.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Where is my Code Wrong
    By ayoonisito in forum C Programming
    Replies: 3
    Last Post: 10-30-2011, 04:25 PM
  2. What's wrong w/ this code?
    By banditojosh1997 in forum C Programming
    Replies: 8
    Last Post: 08-22-2011, 07:09 PM
  3. What's wrong with this code?
    By Code Thug in forum C++ Programming
    Replies: 16
    Last Post: 03-04-2010, 01:36 PM
  4. Anyone see what is wrong with this code?
    By Wise1 in forum C Programming
    Replies: 2
    Last Post: 02-13-2002, 02:01 PM
  5. what is wrong with this code
    By Unregistered in forum C Programming
    Replies: 6
    Last Post: 11-21-2001, 03:46 PM

Tags for this Thread