Требуется определить массив целых чисел (например, размера 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'); } Код #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'); }
Если есть челики,которые шарят в СИ,могу платить за лабы,ибо у меня горит,к концу декабря нужно 12 лаб,а сдано у меня 5
Замени строку с 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] << " "; } } Код 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] << " "; } }
BeatleJuice_inactive333016, а если числа большие?Можешь while'ом сделать?До лимита кину,сейчас все впадлу
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] << " "; } } Код 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] << " "; } }
BeatleJuice_inactive333016, Если оставляю только <min,то работает,а с двумя условиями выдает ошибку if (a[i] < min && a[i] % 2 = 0) Код if (a[i] < min && a[i] % 2 = 0)
BeatleJuice_inactive333016, выводит неправильно http://prntscr.com/lq3w3e,должно со свойствами T в обратном порядке(123 - 321) UPD: Исправил,но числа с - не меняет,хотя должон,с abs поэкперементировал,не работает
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] << " "; } } Код 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] << " "; } }
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); } Код #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); }