Другие языки программирования и технологии
Программирование С++. Лабу нужно написать, а я не очень смекаю, что делать с буквами.
Описать процедуру Split2(A, NA, B, NB, C, NC), формирующую по целочисленному массиву A размера NA два целочисленных массива B и C размера NB и NC соответственно; при этом массив B содержит все четные числа из массива A, а массив C — все нечетные числа (в том же порядке). Массивы B и C и числа NB и NC являются выходными параметрами. Применить эту процедуру к данному массиву A размера NA и вывести размер и содержимое полученных массивов B и C.
#include <iostream>
using namespace std;
void split(int* a, const int na, int*& b, int& nb, int*& c, int& nc) {
for (auto i = 0; i < na; ++i) {
a[i] & 1 ? ++nc : ++nb;
}
b = new int[nb];
c = new int[nc];
for (auto i = 0, j = 0, k = 0; i < na; ++i) {
a[i] & 1? c[j++] = a[i] : b[k++] = a[i];
}
}
void show(int* v, int n, const char* msg = "") {
cout << msg << ": ";
for (auto i = 0; i < n; ++i) cout << ' ' << v[i];
cout.put('\n');
}
int main() {
int* b = nullptr;
int* c = nullptr;
int a[] = { 1, 8, 3, 6, 5, 4, 7, 2, 9, 0, 5 };
int nb = 0, nc = 0, na = size(a);
split(a, na, b, nb, c, nc);
show(a, na, "a");
if (b != nullptr) {
show(b, nb, "b");
delete[] b;
b = nullptr;
}
if (c != nullptr) {
show(c, nc, "c");
delete[] c;
c = nullptr;
}
system("pause");
}
using namespace std;
void split(int* a, const int na, int*& b, int& nb, int*& c, int& nc) {
for (auto i = 0; i < na; ++i) {
a[i] & 1 ? ++nc : ++nb;
}
b = new int[nb];
c = new int[nc];
for (auto i = 0, j = 0, k = 0; i < na; ++i) {
a[i] & 1? c[j++] = a[i] : b[k++] = a[i];
}
}
void show(int* v, int n, const char* msg = "") {
cout << msg << ": ";
for (auto i = 0; i < n; ++i) cout << ' ' << v[i];
cout.put('\n');
}
int main() {
int* b = nullptr;
int* c = nullptr;
int a[] = { 1, 8, 3, 6, 5, 4, 7, 2, 9, 0, 5 };
int nb = 0, nc = 0, na = size(a);
split(a, na, b, nb, c, nc);
show(a, na, "a");
if (b != nullptr) {
show(b, nb, "b");
delete[] b;
b = nullptr;
}
if (c != nullptr) {
show(c, nc, "c");
delete[] c;
c = nullptr;
}
system("pause");
}
#include "iostream"
#include "iomanip"
#include "ctime"
#include "cstdlib"
using namespace std;
void pra(int*a, int na){
for(int i=0;i< na;i++)cout<< setw(3)<< a[i]; cout<<"; size="<< na<< endl;}
void Split2(int*A, int&NA, int*&B, int&NB, int*&C, int&NC){
NB=NC=0; for(int i=0;i< NA;i++)(A[i]&1?NC:NB)++;
B=new int[NB]; C=new int[NC];
NB=NC=0; for(int i=0;i< NA;i++)(A[i]&1?C[NC++]:B[NB++])=A[i];}
int main(){
int na,nb,nc,*a,*b,*c; cout<<"N: "; cin>>na;
srand(time(NULL)); a=new int[na]; for(int i=0;i< na;i++)a[i]=rand()%100;;
cout<<"A: "; pra(a,na); Split2(a,na,b,nb,c,nc);
cout<<"B: "; pra(b,nb); cout<<"C: "; pra(c,nc);}
#include "iomanip"
#include "ctime"
#include "cstdlib"
using namespace std;
void pra(int*a, int na){
for(int i=0;i< na;i++)cout<< setw(3)<< a[i]; cout<<"; size="<< na<< endl;}
void Split2(int*A, int&NA, int*&B, int&NB, int*&C, int&NC){
NB=NC=0; for(int i=0;i< NA;i++)(A[i]&1?NC:NB)++;
B=new int[NB]; C=new int[NC];
NB=NC=0; for(int i=0;i< NA;i++)(A[i]&1?C[NC++]:B[NB++])=A[i];}
int main(){
int na,nb,nc,*a,*b,*c; cout<<"N: "; cin>>na;
srand(time(NULL)); a=new int[na]; for(int i=0;i< na;i++)a[i]=rand()%100;;
cout<<"A: "; pra(a,na); Split2(a,na,b,nb,c,nc);
cout<<"B: "; pra(b,nb); cout<<"C: "; pra(c,nc);}
Условие задачи вижу, а вопрос где?
Что значит "не очень смекаю, что делать с буквами"?
Что значит "не очень смекаю, что делать с буквами"?
в лоб:
пробежаться по массиву A. найти количество четных элементов NB
создать два массива B и C длиной NB и NC= NA-NB
еще раз пробежаться по массиву A и скопировать каждый его четный элемент в B, а нечетный в C
пробежаться по массиву A. найти количество четных элементов NB
создать два массива B и C длиной NB и NC= NA-NB
еще раз пробежаться по массиву A и скопировать каждый его четный элемент в B, а нечетный в C
Похожие вопросы
- Программирование на Си. нужно написать прогу
- Люди помогите написать программы для Pascal очень срочно и очень нужно
- Программирование!!! Совсем не идет эта задача, нужно написать на паскале!!
- Программирование ардуино-велокомпьютера. Как написать ос?
- С чего начать изучение программирования, чтобы не просто "кодить", а понимать и осознавать, что ты делаешь и зачем.
- Подскажите пожалуйста, программирование в 1С. Нужно сгенерировать массив....
- Задание_Кто соображает в программировании на паскале? Надо написать небольшую программу, а я в предмете плохо понимаю))
- Нужно написать программы в Паскале! Массивы! Срочно! Помогите!
- Программирование на с++, как написать кодировщик?
- Нужно написать программу, на нахождения бессектрисы треугольника, если пользователем задано длину плз напишите прогу С++