Как сохранить пользовательский ввод круглых чисел в массиве

#arrays #c #input #comparison

#массивы #c #ввод #сравнение

Вопрос:

У меня есть проблема, которую нужно решить. Мне нужно создать программу, которая будет брать 2 числа из последовательности чисел и сравнивать их, если это ‘<‘ ‘>’ или ‘=’, а список чисел должен заканчиваться номером 0. Итак, в основном у меня есть последовательность чисел {5, 7, 8, 4, 3, 3, 0} и программа должна проверять пары 5,7 (это 5 <7), затем она перейдет к 8, 4 (это 8> 4), затем 3, 3, так чторавно 3 = 3. И 0 — это в основном выход.

До сих пор я записывал сравнение чисел, но теперь у меня есть только программа, которая принимает 2 ввода от пользователя и сравнивает их. Но мне вроде как нужно указать для пользователя, скажем, ввести 11 чисел, которые будут заканчиваться на 0 (поскольку 0 не будет учитываться при сравнении) и сохранить эти числа в массиве, а затем позволить программе сравнивать 2 числа друг за другом (в последовательности) с <,> или =.

Заранее спасибо, ребята. Я немного новичок в C, и эти массивы, особенно malloc, calloc, realloc, действительно сложны для меня.

Пока мой код выглядит так:

 #include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define post 10
int main(){

    int a, b;


    printf("Enter two numbers: ");
    scanf("%d%d", amp;a, amp;b);

    if (a > b)
    {
        printf("%d > %dn", a, b);
    }
    else if(a < b)
    {
        printf("%d < %dn", a, b);
    }
    else
    {
        printf("%d = %dn", a, b);
    }


    system("pause");
    return 0;
}
  

Ответ №1:

Вы можете создать большой массив, а затем ввести, сколько чисел вы хотите сравнить. Затем вы можете использовать for для просмотра чисел в массиве и сравнения их.

Вот пример:

 #include <stdio.h>

#define SIZE 100

int main()
{
    int arr[SIZE] = {0};

    printf("Enter number: ");
    
    int number;
    int counter = 0;   
    
    while (1)
    {
        if (scanf("%d", amp;number) != 1)
        {
            printf("Invalid number!");
            return 1;
        }
        arr[counter] = number;
        if(number == 0) {break;}
        counter  ;
    }

    for (int i = 0; i < counter; i =2)
    {
        if (arr[i] > arr[i   1])
        {
            printf("%d > %dn", arr[i], arr[i   1]);
        }
        else if(arr[i] < arr[i   1])
        {
            printf("%d < %dn", arr[i], arr[i   1]);
        }
        else
        {
            printf("%d = %dn", arr[i], arr[i   1]);
        }      
    }
    
    return 0;
}
  

Вывод:

 Enter number: 1 2 3 4 5 5 0
1 < 2
3 < 4
5 = 5
  

Комментарии:

1. Большое спасибо за эту информацию, которая очень помогла. Просто дело в том, что мне нужно иметь неравномерный набор чисел в моем массиве, потому что они хотят, чтобы я заканчивал последовательность чисел 0, что в основном будет похоже на номер выхода. Так, например, если у меня есть массив чисел {1,2,3,4,0}, он будет сравнивать 1<2, 3<4, 0 = конец.

2. @Neolix Я изменил код в соответствии с вашими условиями, подойдет ли вам этот ответ?

3. О, вау, я только что протестировал его, и он работает так, как я ожидал, он остается в виде, пока я не введу 0 в конце! Большое спасибо, мне очень нравится этот ответ 🙂 Очень признателен!!!

4. @Neolix Никаких проблем :). Вы также можете пометить ответ как «принятый», если он работает так, как вы ожидали)