Re: 3 функції. Без використання операторів if і switch.
допоможіть знайти помилку
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → 3 функції. Без використання операторів if і switch.
Сторінки Попередня 1 2 3 4 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
допоможіть знайти помилку
якщо вам потрібна репутація на форумі то я після вирішення проблеми можу на всі ваші коментарі нажати дякую в цій темі
а можете потім ще відео записати, де ви офіційно висловлюєте подяку? бажано з усіма членами своєї сім'ї на фоні
а можете потім ще відео записати, де ви офіційно висловлюєте подяку? бажано з усіма членами своєї сім'ї на фоні
це вже ні
Можете хоча б розібратися, в якій із трьох функцій оте вилізає? Чи в усіх?
кількість елементів добра в усіх ,значеня 1 елемента у всіх добре а дальше незрозуміле йде так ніби десь замежі масиву вийшов але де не може знайти.
По другій і третій функціях - раджу зробити одну функцію із додатковим параметром (дільником), а у тих двох її викликати, десь так:
int *div_2(int *array, int &size)
{
return divisibles(array, size, 2);
}
int *div_3(int *array, int &size)
{
return divisibles(array, size, 3);
}
int *divisibles(int *array, int &size, int div)
{
//а тут ваш код
}
Це сильно полегшить вам задачу.
І так, new[0] має трохи некоректну поведінку: повертається ненульовий вказівник, але розіменовувати його не можна, це UB. Що у вас і спостерігаємо (рядки 39 і 51).
http://www.cplusplus.com/reference/new/operator%20new[]/
а можна якось зробити щоб new повертав нульовий вказівник?
по 2 і 3 зроблю після того як налагоджу всі 3
допоможіть знайти помилку
а зараз код як виглядає?
#include <iostream>
#include <time.h>
using namespace std;
int* add_end(int *ar, int &n, int num);
int* func3(int *ar, int &n);
int* func2(int *ar, int &n);
int* func1(int *ar, int &n);
void set(int *ar, int n);
void print(int *ar, int n);
void main() {
setlocale(LC_ALL, "ru");
srand(time(0));
int n;
cout << "Введiть розмiр масиву: ";
cin >> n;
int* ar = new int[n];
set(ar, n);
print(ar, n);
int*(*p[3])(int*, int&) = { func1,func2,func3 };
int choice;
cout << "1 - залишити простi числа з масиву \n2 - залишити числа кратнi 3 з масиву \n3 - залишити парнi числа з масиву \nВведiть вибiр:";
cin >> choice;
*ar = *p[choice - 1](ar, n);
print(ar, n);
system("pause");
}
int* add_end(int *ar, int &n, int num) {
int* p = new int[n + 1];
for (int i = 0; i < n; i++) {
p[i] = ar[i];
}
p[n] = num;
delete[]ar;
n++;
return p;
}
int* func3(int *ar, int &n) {
int nn = n;
n = 0;
int* p = new int[n];
int num = 0;
for (int i = 0; i < nn; i++) {
num = ar[i];
ar[i] % 2 == 0 ? (p = add_end(p, n, num)) || (i += 0) : (i += 0);
}
delete[]ar;
return p;
}
int* func2(int *ar, int &n) {
int nn = n;
n = 0;
int* p = new int[n];
int num = 0;
for (int i = 0; i < nn; i++) {
num = ar[i];
ar[i] % 3 == 0 ? (p = add_end(p, n, num)) || (i += 0) : (i += 0);
}
delete[]ar;
return p;
}
int* func1(int *ar, int &n) {
int nn = n;
n = 0;
int* p = new int[n];
int b = 0;
int num = 0;
for (int i = 0; i < nn; i++) {
b = 0;
for (int c = 1; c < ar[i]; c++) {
ar[i] % c == 0 ? (ar[i] >= 0 ? (b++) : (b += 0)) : b += 0;
}
num = ar[i];
b < 3 ? (p = add_end(p, n, num)) || (b += 0) : (b += 0);
}
delete[]ar;
return p;
}
void set(int *ar, int n) {
for (int i = 0; i < n; i++) {
*(ar + i) = rand() % 101 - 50;
}
}
void print(int *ar, int n) {
for (int i = 0; i < n; i++) {
cout << *(ar + i) << " ";
}
cout << "\n";
}
я пробував num в
ar[i] % 2 == 0 ? (p = add_end(p, n, num)) || (i += 0) : (i += 0);
замінити на
ar[i]
але не допомогло
можливо це в візуал студіо помилка?
setlocale(LC_ALL, "ru");
яке буде ваше останнє слово?
це зміна мови української нема просто
але в сіаутах пишу по укр а і англ і компілятор тоді все бачить
англійську я не знаю укр немає і як мені тоді по укр писати?
і мені зараз важливіше щоб програма працювала як потрібно