Если оператор игнорирует условие - PullRequest
0 голосов
/ 20 ноября 2018
#include <stdio.h>
#include<math.h>

int binary_to_decimal(int n){
    int ostatok, i=0, pom, decimal=0;
    pom=n;
    while(pom)
    {
        ostatok=pom%10;
        decimal+=ostatok*pow(2,i);
        pom/=10;
        i++;
    }
    return decimal;
}

int main()
{
    int m, n, i, max=0, number;
    scanf(" %d %d", &n, &m);
    int array[n];

    for(i=0; i<n ;i++){
        scanf(" %d", &number);
        binary_to_decimal(number);
        if(number>m) // this if statement doesn't seem to be doing it's job
            array[i]=number;
        if(array[i]>max)
            max=array[i];
    }

    for(i=0; i<n ;i++)
    {
        printf(" %d %d\n", array[i], binary_to_decimal(array[i]));
    }
    printf("Max %d %d", max,  binary_to_decimal(max));
    return 0;
}

Программа: вы вводите два значения int, m и n.m используется в качестве значения для сравнения, а n - это число двоичного числа, которое пользователь вводит в цикл.Если введенное число больше, чем число m, распечатайте значения введенного числа в двоичном, а затем в десятичном виде.В конце выведите число с наибольшим значением в двоичном и десятичном виде.Моя проблема - if, где я сравниваю m и введенное число, и я не могу найти проблему.

1 Ответ

0 голосов
/ 20 ноября 2018

Вызов binary_to_decimal (number) не меняет ваш номер.Попробуйте что-то вроде:

number = binary_to_decimal(number);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...