Модуль 1.7 (Цикл for и массивы) Данный модуль научит циклу for, а также работать с массивами чисел, которые позволяют хранить в себе последовательность.
Ниже представлены примеры задач с решением на C++ на тему Цикл for и массивы.
Выведите все элементы массива с четными индексами (то есть
A[0]
,A[2]
,A[4]
, …).
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector <int> a(n);
//считывание
for (int i = 0; i < n; i++) {
cin >> a[i];
}
//обработка и вывод
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
cout << a[i] << " ";
}
}
}
Выведите все четные элементы массива.
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector <int> a(n);
//считывание
for (int i = 0; i < n; i++) {
cin >> a[i];
}
//обработка и вывод
for (int i = 0; i < n; i++) {
if (a[i] % 2 == 0) {
cout << a[i] << " ";
}
}
}
Найдите количество положительных элементов в данном массиве.
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main() {
int n,k;
cin >> n;
k = 0;
vector <int> a(n);
//считывание
for (int i = 0; i < n; i++) {
cin >> a[i];
}
//обработка и вывод
for (int i = 0; i < n; i++) {
if (a[i] > 0) {
k++;
}
}
cout << k;
}
Дан массив чисел. Выведите все элементы массива, которые больше предыдущего элемента .
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector <int> a(n);
//считывание
for (int i = 0; i < n; i++) {
cin >> a[i];
}
//обработка и вывод
for (int i = 1; i < n; i++) {
if (a[i] > a[i-1]) {
cout << a[i] << ' ';
}
}
}
Дан массив целых чисел. Если в нем есть два соседних элемента одного знака, выведите эти числа. Если соседних элементов одного знака нет — не выводите ничего. Если таких пар соседей несколько — выведите первую пару.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector <int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int i = 1; i < n; i++) {
if ((a[i]>0) && (a[i-1]>0) || (a[i]<0) && (a[i-1]<0)) {
if (a[i] > a[i-1]) {
cout << a[i-1] << " " << a[i];
} else {
cout << a[i] << " " << a[i-1];
}
break;
}
}
return 0;
}
Выведите значение наименьшего из всех положительных элементов в массиве. Известно, что в массиве есть хотя бы один положительный элемент.
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main() {
int n, min;
min = 1000;
cin >> n;
vector <int> a(n);
//считывание
for (int i = 0; i < n; i++) {
cin >> a[i];
}
//обработка и вывод
for (int i = 1; i < n; i++) {
if (min > a[i] and a[i] > 0) {
min = a[i];
}
}
cout << min;
}
Выведите значение наименьшего нечетного элемента списка, а если в списке нет нечетных элементов — выведите число
0
.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int min = 0;
int n, vb = 0;
cin >> n;
vector <int> a;
vector <int> b;
//считывание элементов
for (int i = 0; i < n; i++) {
int temp;
cin >> temp;
a.push_back(temp);
}
//создание нечетного вектора
for (int i = 0; i < n; i++) {
if (a[i] != 0 && a[i] % 2 != 0) {
vb = a[i];
b.push_back(vb);
}
}
//если все четное, то 0
if (vb == 0) {
cout << 0;
return 0;
}
//нахождение минимального из нечетного
min = b[0];
for (int i = 0; i < b.size(); i++) {
if (b[i] < min) {
min = b[i];
}
}
cout << min;
return 0;
}
Дан список, упорядоченный по неубыванию элементов в нем. Определите, сколько в нем различных элементов.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N, a;
bool flag;
vector <int> b;
cin >> N;
for(int i=0; i<N; i++)
{
cin >> a;
flag = false;
for(int i1=0; i1 < b.size(); i1++)
{
if(a==b[i1]) flag = true;
}
if(flag == false) b.push_back(a);
}
cout << b.size();
return 0;
}
Переставьте соседние элементы массива (A[0] c A[1], A[2] c A[3] и т.д.). Если элементов нечетное число, то последний элемент остается на своем месте.
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main() {
int n, k, tmp;
k = 0;
cin >> n;
vector <int> a(n);
//считывание
for (int i = 0; i < n; i++) {
cin >> a[i];
}
//обработка и вывод
for (int i = 1; i < n; i += 2) {
cout << a[i] << ' ' << a[i-1] << ' ';
}
if (n % 2 == 1) {
cout << a[n - 1];
}
}
Циклически сдвиньте элементы списка вправо (A[0] переходит на место A[1], A[1] на место A[2], …, последний элемент переходит на место A[0]).
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int a[1000];
for(int i=0;i<n;i++)
cin>>a[i];
cout << a[n-1]<<" ";
for(int i=0;i<n-1;i++)
cout << a[i]<<" ";
return 0;
}
Дан массив чисел. Посчитайте, сколько в нем пар элементов, равных друг другу. Считается, что любые два элемента, равные друг другу образуют одну пару, которую необходимо посчитать.
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main() {
int n, k;
k = 0;
cin >> n;
vector <int> a(n);
//считывание
for (int i = 0; i < n; i++) {
cin >> a[i];
}
//обработка и вывод
for (int i = 0; i < n; i ++) {
for (int j = 0;j < n; j++) {
if (a[i] == a[j] and i > j) {
k++;
}
}
}
cout << k;
}
Дан массив. Выведите те его элементы, которые встречаются в массиве только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в списке.
using namespace std;
#include <iostream>
#include <iomanip>
#include <cmath>
#include <vector>
int main() {
int n, r=0;
cin >> n;
vector <int> a;
//schit
for (int i = 0; i < n; i ++ ){
int temp;
cin >> temp;
a.push_back(temp);
}
// обработка
for (int i = 0; i < n; i += 1){
r = 0;
for (int i2 = 0; i2 < n; i2 += 1)
{
if (a[i] == a[i2]) r++;
}
if (r == 1)
cout << a[i] << " ";
}
return 0;
}
Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них пара бьющих друг друга.
#include <iostream>
#include <cmath>
#include <iomanip>
#include <vector>
using namespace std;
int main()
{
int sum=0;
vector <int> a(16);
for (int i = 0; i < 16; i++) cin >> a[i];
for (int j = 0; j < 16; j+=2)
{
for(int k=j+2; k<16;k+=2)
{
if((a[j]==a[k]) || (a[j+1]==a[k+1]) || (a[j]-a[k]==a[j+1]-a[k+1]) || (a[j]-a[k]==-a[j+1]+a[k+1]))
{
sum++;
}
}
}
if(sum>0)cout<<"YES";
else cout<<"NO";
system("pause");
return 0;
}
N кеглей выставили в один ряд, занумеровав их слева направо числами от 1 до N. Затем по этому ряду бросили K шаров, при этом i-й шар сбил все кегли с номерами от li до ri включительно. Определите, какие кегли остались стоять на месте.
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
vector <string> xe(n);
for (int i = 0; i < n; i++) {
xe[i] = "I";
}
vector <int> x(k);
vector <int> y(k);
for (int j = 0; j < k; j++) {
cin >> x[j];
cin >> y[j];
}
for (int i = 0; i < k; i++) {
for (int j= x[i] - 1; j <= y[i] - 1; j++)
xe[j] = ".";
}
for (int i = 0; i < n; i++) {
cout << xe[i];
}
return 0;
}
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы