Ответы пользователя по тегу C
  • Как будет выглядеть данный псевдокод в коде на языке Си?

    @KryOne
    Не совсем понял что такое рез X: возврат значения или вывод. Сделал с выводом.

    void Sort()
    {
        int n;
    
        printf("Input n: ");
        scanf("%d", &n);
    
        int* x = (int*)malloc(n * sizeof(int));
    
        for (int i = 0; i < n; ++i)
        {
            printf("\nInput x[%d] = ", i);
            scanf("%d", (x + i));
        }
    
        for (int i = 0; i < n - 1; i++)
        {
            char flag = 0;
            for (int j = 0; j < n - i - 1; j++)
            {
                if (x[j] > x[j + 1])
                {
                    int p = x[j];
                    x[j] = x[j + 1];
                    x[j + 1] = p;
    
                    flag = 1;
                }
            }
    
            if (flag == 0)
                break;
        }
    
        for (int i = 0; i < n; i++)
        {
            printf("\nElement x[%d]=%d", i, x[i]);
        }
    
        printf("\n");
    
        free(x);
    }
    Ответ написан
    1 комментарий
  • Почему функция выводит нули?

    @KryOne
    Есть небольшие ошибки при работе со строками в стиле C и индексами массива. Немного переписал функцию, вроде работает.

    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    void func(char a[]) 
    {
        int startIndex = 0;
        int endIndex = 0;
        for (int i = 0; i < strlen(a); i++)
        {
            int num = 0;
            int numcount = 0;
            if (a[i] >= '0' && a[i] <= '9') 
            {
                // Ищем начальный и конечный индексы числа.
                startIndex = i;
                endIndex = strlen(a) - 1; // вычитаем 1 т.к. исключаем 0-символ.
                for (int j = startIndex; j < strlen(a); j++)
                {
                    if (a[j] < '0' || a[j] > '9')
                    {
                        endIndex = j - 1;
                        break;
                    }
                }
    
                // формируем число.
                char number[100];
                int k = 0;
                for (int l = startIndex; l <= endIndex; l++)
                {
                    number[k] = a[l];
                    k++;
                }
                number[k] = '\0'; // Строки в стиле C должны заканчиваться 0-символом.
                
                printf("%d\n", atoi(number));
    
                i = endIndex;
            }
        }
    }
    
    int main()
    {
        char f[100] = "aaa010101bbb343ccc";
        func(f);
    }
    Ответ написан
    Комментировать