Загрузка...

Нужно помочь дописать лабу на C

Тема в разделе C/C++ создана пользователем graulv 3 дек 2018. 547 просмотров

Загрузка...
  1. graulv
    graulv Автор темы 3 дек 2018 Заблокирован(а) 383 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.
    Код

    #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 Автор темы 3 дек 2018 Заблокирован(а) 383 24 мар 2018
    Если есть челики,которые шарят в СИ,могу платить за лабы,ибо у меня горит,к концу декабря нужно 12 лаб,а сдано у меня 5:frog_mm:
     
  3. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 3 дек 2018 God hates us all 41 11 мар 2018
    Замени строку с std::cout на printf (или что там у C)
    Код

    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 Автор темы 3 дек 2018 Заблокирован(а) 383 24 мар 2018
  5. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 3 дек 2018 God hates us all 41 11 мар 2018
  6. graulv
    graulv Автор темы 3 дек 2018 Заблокирован(а) 383 24 мар 2018
    BeatleJuice_inactive333016, а если числа большие?Можешь while'ом сделать?До лимита кину,сейчас все впадлу:frog_why:
     
  7. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 3 дек 2018 God hates us all 41 11 мар 2018
    graulv, ок. Минут через 30
     
  8. graulv
    graulv Автор темы 3 дек 2018 Заблокирован(а) 383 24 мар 2018
  9. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 3 дек 2018 God hates us all 41 11 мар 2018
    graulv,
    Код

    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 Автор темы 3 дек 2018 Заблокирован(а) 383 24 мар 2018
  11. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 3 дек 2018 God hates us all 41 11 мар 2018
  12. graulv
    graulv Автор темы 3 дек 2018 Заблокирован(а) 383 24 мар 2018
    BeatleJuice_inactive333016, Если оставляю только <min,то работает,а с двумя условиями выдает ошибку
    Код
    if (a[i] < min && a[i] % 2 = 0)
     
  13. graulv
    graulv Автор темы 3 дек 2018 Заблокирован(а) 383 24 мар 2018
  14. graulv
    graulv Автор темы 3 дек 2018 Заблокирован(а) 383 24 мар 2018
    BeatleJuice_inactive333016, выводит неправильно http://prntscr.com/lq3w3e,должно со свойствами T в обратном порядке(123 - 321)
    UPD: Исправил,но числа с - не меняет,хотя должон,с abs поэкперементировал,не работает
     
  15. Brudagon
    Brudagon 3 дек 2018 444 7 дек 2017
     
  16. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 3 дек 2018 God hates us all 41 11 мар 2018
    graulv, Сейчас должно работать как надо
    Код

    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 Автор темы 3 дек 2018 Заблокирован(а) 383 24 мар 2018
  18. BeatleJuice_inactive333016
    BeatleJuice_inactive333016 3 дек 2018 God hates us all 41 11 мар 2018
    graulv, хм. У меня всё работает
    [IMG]
     
  19. graulv
    graulv Автор темы 3 дек 2018 Заблокирован(а) 383 24 мар 2018
    BeatleJuice_inactive333016, действительно заработало http://prntscr.com/lq4dio XD
    Но 30 выводит как 3
    Полный код
    Код

    #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 3 дек 2018 God hates us all 41 11 мар 2018
    Да, так как нет числа 03
     
Top