Как я могу сделать программу, чтобы проверить, находится ли массив в порядке убывания, в порядке возрастания или нет? - PullRequest
0 голосов
/ 18 декабря 2018

Этот код позволяет пользователю заполнять только массив:
Предполагается проверить, находится ли он в порядке убывания или возрастания, или, возможно, ни один из них, без использования какой-либо функции сортировки.Но он не работает должным образом, так как он не сортируется, когда он не является ни восходящим, ни нисходящим

 #include <stdio.h>
int main ()
{
    int array[10];
    int i;
    int c;
    int d;

    printf("Enter the element of array:\n");
    for(i=0; i<10; i++)
    {
        scanf("%d",&array[i]);
    }



    for(i=0; i<10; i++)
    {

        printf("%d\n",array[i]);
    }

    for(i=0; i<9; i++)
    {
        if(array[i]<array[i+1])
        {
            c=1;
        }
        else if(array[i]>array[i+1])
        {
            d=1;
        }
    }

    if(c==1)
    {
        printf("ASCENDING");
    }
    else if(d==1)
    {
        printf("DESCENDING");
    }
    else 
    {
        printf("NONE");
    }
    return 0;

}

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018
#include <stdio.h>

#define ASND 0
#define DSND 1

int main ()
{
    int a[10];
    int i = 0;
    int order;


    printf("Enter the element of array:\n");
    for(i=0; i<10; i++) {
        scanf("%d",&a[i]);
    }

    for(i=0; i<10; i++) {
        printf("%d\n",a[i]);
    }

    for(i=1;i<10;i++){
        if(a[i-1] < a[i]) {
            order = ASND;
            break;
        }
        if(a[i-1] > a[i]) {
            order = DSND;
            break;
        }
    }
    if(i==10) {
        printf("all elements are same\n");
        return 0;
    }
    if(order == ASND) {
        for(i=1;i<10;i++) {
            if(a[i-1] > a[i]) {
                printf("no order\n");
                return 0;
            }
        }
        printf("ascending order\n");
        return 0;
   }

    for(i=1;i<10;i++) {
        if(a[i-1] < a[i]) {
            printf("no order\n");
            return 0;
        }
    }
    printf("descending order\n");
    return 0;
}
0 голосов
/ 18 декабря 2018

Это довольно просто и очень читабельно.Я думаю, что это может сделать работу хорошо!Только при необходимости одного цикла, чтобы проверить это, суммируя счетчик для восходящего или нисходящего, и проверяя после!

#include <stdio.h>

int main ()
{
    int a[10];
    int i = 0;
    int order;


    printf("Enter the element of array:\n");
    for(i=0; i<10; i++) {
        scanf("%d",&a[i]);
    }

    for(i=0; i<10; i++) {
        printf("%d\n",a[i]);
    }
    int ascendingCount=0;
    int descendingCount=0;
    int num1=a[0];
    for(int i=1;i<10;i++){
        if(a[i]>=num1){
            num1=a[i];
            ascendingCount++;
        }
        else if(a[i]<=num1){
            num1=a[i];
            descendingCount++;
        }

    }
    if(ascendingCount==9) printf("it is ascendingCount");
    else if(descendingCount==9) printf("it is descending");
    else printf("its nothing");


    return 0;
}
0 голосов
/ 18 декабря 2018

Если вы нарушили правило возрастания или убывания, вам нужно будет выйти из цикла, чтобы не сбрасывать переменные правила возрастания или убывания, которые вы использовали.

#include <stdio.h>
int main ()
{
    int array[10];
    int i = 0;
    int c = 0;
    int d = 0;

    printf("Enter the element of array:\n");
    for(i=0; i<10; i++)
    {
        scanf("%d",&array[i]);
    }



    for(i=0; i<10; i++)
    {

        printf("%d\n",array[i]);
    }

    for(i=0; i<9; i++)
    {
        if(array[i]<array[i+1])
        {
            c=1;
        }
        else if(array[i]>array[i+1])
        {
            d=1;
        }

        // Run of same value
        else if (d==0 && c==0)
        {
            continue;
        }

        // Can't be both ascending and descending
        if (d == 1 && c == 1)
        {
            d = 0;
            c = 0;
            break;
        }
    }

    if(c==1)
    {
        printf("ASCENDING");
    }
    else if(d==1)
    {
        printf("DESCENDING");
    }
    else 
    {
        printf("NONE");
    }
    return 0;

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