Загрузка...

Need help to finish writing the lab in C

Thread in C/C++ created by graulv Dec 3, 2018. 558 views

  1. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
    Требуется определить массив целых чисел (например, размера 30), заполнить его случайными числами (в диапазоне от A до B, где A и B за-даются в директивах #define) или ввести его элементы с клавиатуры. Найти минимальный элемент массива из всех элементов, обладающих свойством Q. Все элементы массива, обладающие свойством T, заменить на их обрат-ные изображения (например, 123 заменить на 321). Отсортировать массив по возрастанию. После инициализации и каждого преобразования выво-дить массив на экран. Свойства Q и T задаются в вариантах задания.
    Программа должна содержать следующие функции:
    • инициализация элементов массива случайными числами или вво-димыми с клавиатуры;
    • вывод массива на экран;
    • нахождение минимального элемента из всех элементов, обладающих свойством Q;
    • сортировка элементов массива;
    • целочисленная функция, которая возвращает число со свойством T в перевернутом виде
    1,2,3,4 я сделал,нужно дописать 5,не понимаю только как.
    Мой вариант - Q: число является четным. T: число содержит в своем составе цифры 2 и 3.
    Code

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define N 10
    #define A -50
    #define B 50
    /* инициализация элементов массива a случайными числами в диапазоне от A до B */
    void Init(int *a, int n)
    {
    int i;
    for (i = 0; i < n; i++)
    a[i] = A + rand() % (B - A + 1);
    }
    /* вывод массива a на экран */
    void Print(int *a, int n)
    {
    int i;
    for (i = 0; i < n; i++)
    printf("%4d", a[i]);
    putchar('\n');
    }
    /* минимальный элемент массива a */
    int MinQ(int *a, int n)
    {
    int i, min = a[0];
    for (i = 1; i < n; i++)
    if (a[i] < min && a[i] % 2 = 0)
    min = a[i]; return min;
    }
    void Sort(int *a, int n)/*Сортировка элементов Массива*/
    {
    int i, j, buf;
    for (i = 0; i < N; i++)
    for (i = 1; i < N; i++) {
    buf = a[i];
    for (j = i - 1; j >= 0; j--)
    if (buf < a[j]) {
    a[j + 1] = a[j];
    a[j] = buf;
    }
    }
    for (i = 0; i < N; i++)
    printf("%d ", a[i]);
    putchar('\n');
    }
     
  2. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
    Если есть челики,которые шарят в СИ,могу платить за лабы,ибо у меня горит,к концу декабря нужно 12 лаб,а сдано у меня 5:frog_mm:
     
  3. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 Dec 3, 2018 God hates us all 41 Mar 11, 2018
    Замени строку с std::cout на printf (или что там у C)
    Code

    void two_three(int *a, int n)
    {
    for (int i = 0; i < n; i++)
    {
    if (a[i] % 10 == 2 || a[i] % 10 == 3 || a[i] / 10 == 2 || a[i] / 10 == 3)
    {
    a[i] = a[i] / 10 + (a[i] % 10) * 10;
    }
    std::cout << a[i] << " ";
    }
    }
     
  4. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
  5. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 Dec 3, 2018 God hates us all 41 Mar 11, 2018
  6. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
    BeatleJuice_inactive333016, а если числа большие?Можешь while'ом сделать?До лимита кину,сейчас все впадлу:frog_why:
     
  7. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 Dec 3, 2018 God hates us all 41 Mar 11, 2018
    graulv, ок. Минут через 30
     
  8. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
  9. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 Dec 3, 2018 God hates us all 41 Mar 11, 2018
    graulv,
    Code

    void reverse(int *a, int n)
    {
    int temp, b, k;
    for (int i = 0; i < n; i++)
    {
    k = 0;
    temp = a[i];
    while (temp > 0)
    {
    if (temp % 10 == 2 || temp % 10 == 3)
    k++;
    temp /= 10;
    }
    if (k)
    {
    b = a[i] % 10;
    a[i] /= 10;
    while (a[i] > 0)
    {
    b = b * 10 + a[i] % 10;
    a[i] /= 10;
    }
    a[i] = b;
    }
    std::cout << a[i] << " ";
    }
    }
     
  10. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
  11. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 Dec 3, 2018 God hates us all 41 Mar 11, 2018
  12. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
    BeatleJuice_inactive333016, Если оставляю только <min,то работает,а с двумя условиями выдает ошибку
    Code
    if (a[i] < min && a[i] % 2 = 0)
     
  13. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
  14. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
    BeatleJuice_inactive333016, выводит неправильно http://prntscr.com/lq3w3e,должно со свойствами T в обратном порядке(123 - 321)
    UPD: Исправил,но числа с - не меняет,хотя должон,с abs поэкперементировал,не работает
     
  15. Brudagon
    Brudagon Dec 3, 2018 443 Dec 7, 2017
     
  16. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 Dec 3, 2018 God hates us all 41 Mar 11, 2018
    graulv, Сейчас должно работать как надо
    Code

    void reverse(int *a, int n)
    {
    int temp, b, k, c;
    for (int i = 0; i < n; i++)
    {
    k = 0; c = 0;
    if (a[i] > 0)
    c = 1;
    else c = -1;
    a[i] = abs(a[i]);
    temp = a[i];
    while (temp > 0)
    {
    if (temp % 10 == 2 || temp % 10 == 3)
    k++;
    temp /= 10;
    }
    if (k)
    {
    b = a[i] % 10;
    a[i] /= 10;
    while (a[i] > 0)
    {
    b = b * 10 + a[i] % 10;
    a[i] /= 10;
    }
    a[i] = b;
    }
    a[i] *= c;
    std::cout << a[i] << " ";
    }
    }
     
  17. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
  18. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 Dec 3, 2018 God hates us all 41 Mar 11, 2018
    graulv, хм. У меня всё работает
    [IMG]
     
  19. graulv
    graulv Topic starter Dec 3, 2018 Banned 383 Mar 24, 2018
    BeatleJuice_inactive333016, действительно заработало http://prntscr.com/lq4dio XD
    Но 30 выводит как 3
    Полный код
    Code

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define N 10
    #define A -50
    #define B 50
    /* инициализация элементов массива a случайными числами в диапазоне от A до B */
    void Init(int *a, int n)
    {
    int i;
    for (i = 0; i < n; i++)
    a[i] = A + rand() % (B - A + 1);
    }
    /* вывод массива a на экран */
    void Print(int *a, int n)
    {
    int i;
    for (i = 0; i < n; i++)
    printf("%4d", a[i]);
    putchar('\n');
    }
    /* минимальный элемент массива a */
    int MinQ(int *a, int n)
    {
    int i, min = a[0];
    for (i = 1; i < n; i++)
    if (a[i] < min && a[i] % 2 == 0)
    min = a[i]; return min;
    }
    void Sort(int *a, int n)/*Сортировка элементов Массива*/
    {
    int i, j, buf;
    for (i = 0; i < N; i++)
    for (i = 1; i < N; i++) {
    buf = a[i];
    for (j = i - 1; j >= 0; j--)
    if (buf < a[j]) {
    a[j + 1] = a[j];
    a[j] = buf;
    }
    }
    for (i = 0; i < N; i++)
    printf("%d ", a[i]);
    putchar('\n');
    }
    void reverse(int *a, int n)
    {
    int temp, b, k, c;
    for (int i = 0; i < n; i++)
    {
    k = 0; c = 0;
    if (a[i] > 0)
    c = 1;
    else c = -1;
    a[i] = abs(a[i]);
    temp = a[i];
    while (temp > 0)
    {
    if (temp % 10 == 2 || temp % 10 == 3)
    k++;
    temp /= 10;
    }
    if (k)
    {
    b = a[i] % 10;
    a[i] /= 10;
    while (a[i] > 0)
    {
    b = b * 10 + a[i] % 10;
    a[i] /= 10;
    }
    a[i] = b;
    }
    a[i] *= c;
    printf("%d ", a[i]);
    }
    }

    int main()
    {

    int a[N], i, min;
    srand(time(NULL));
    Init(a, N);
    Print(a, N);
    min = MinQ(a, N);
    Sort(a, N);
    reverse(a, N);
    }
     
  20. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 Dec 3, 2018 God hates us all 41 Mar 11, 2018
    Да, так как нет числа 03
     
Loading...
Top