#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 Никаких проблем :). Вы также можете пометить ответ как «принятый», если он работает так, как вы ожидали)