количество элементов
| |
Shevron_7 | Дата: Суббота, 27 Апреля 2013, 01:55 | Сообщение # 1 |
маньяк-бомбист
Сейчас нет на сайте
| как посчитать количество элементов кратных, например, 4 в рядке массива?
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
Сообщение отредактировал Shevron_7 - Суббота, 27 Апреля 2013, 01:56 |
|
| |
harmoxyne | Дата: Суббота, 27 Апреля 2013, 03:31 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Код int[] array; // массив, пусть будет с N элементов, забыл, как правильно объявить. Представим, что он даже заполнен числами int counter = 0; //счетчик
for(int i = 0; i < N; i++){ if(array[i]%4 = 0) {counter++;} } Вот, моя больная голова сморозила что-то в этом роде. Надеюсь, разберешься.
|
|
| |
Shevron_7 | Дата: Суббота, 27 Апреля 2013, 14:55 | Сообщение # 3 |
маньяк-бомбист
Сейчас нет на сайте
| Вот моя недоделаная программа: Код #include <cstdlib> #include <iostream> #include <math.h>
using namespace std;
int main() { setlocale(0,""); double u; int line = 0,r,s,matr[5][4] = { {4,9,25,36}, { 7,8,6,16 }, { 1,3,5,4 }, { 2,3,5,8 }, { 4,4,5,4 } }; cout<<"Исходная матрица:\n"; for(int r=0;r<5;r++) { for(int s=0;s<4;s++) { cout<<matr[r][s]<<'\t'; } cout<<"\n\n\n"; } cout<<"Корни квадратные из элементов первого рядка матрицы: "; for(int x=0;x<4;x++) { u = matr[0][x]; cout<<sqrt(u)<<" "; } cout<<"\n\nМатрица из замененными рядками:\n";
int abc; cin>>abc; }
нужно вывести исходную матрицу, но если в ряде есть больше 2 элементов кратных 4 нужно все элементы этого ряда заменить на 88
Добавлено (27.04.2013, 14:55) --------------------------------------------- Вот что я сварганил: Код cout<<"\n\nМатрица из замененными рядками:\n";
for(line = 0;line < 5;line++){ for(i;i < 4;i++) {if (i<4) {if (matr[line][i]%4==0) {schet++;};};};};
for(line = 0;line < 5;line++) { if (schet>=2) { for(int sc = 0;sc<4;sc++) {matr[line][sc] = 88;}; schet = 0;sc = 0;i = 0;line++; }; }; for(int rd = 0;rd < 5;rd++) { for(int sc = 0;sc < 4;sc++) { cout<<matr[rd][sc]<<'\t'; } cout<<"\n\n\n"; } но это работает только для первого ряда, не могу сообразить как заставить его обрабатывать и следующие ряды
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
Сообщение отредактировал Shevron_7 - Суббота, 27 Апреля 2013, 14:56 |
|
| |
x_X | Дата: Суббота, 27 Апреля 2013, 15:15 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| Код for (int i = 0; i < 5; ++i) for (int j = 0; j < 4; ++j) { if (matr[i][j] % 4 == 0) schet ++; if (schet > 2) { for (int k = 0; k < 4; ++k) matr[i][k] = 88; schet = 0; break; } }
Сообщение отредактировал x_X - Суббота, 27 Апреля 2013, 15:16 |
|
| |
Shevron_7 | Дата: Суббота, 27 Апреля 2013, 15:48 | Сообщение # 5 |
маньяк-бомбист
Сейчас нет на сайте
| а как бы его нормально вывести на экран
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
|
|
| |
x_X | Дата: Суббота, 27 Апреля 2013, 16:06 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Код for (int i = 0; i < 5; ++i) { for (int j = 0; j < 4; ++j) cout << matr[i][j] << " "; cout << endl; }
|
|
| |
Shevron_7 | Дата: Суббота, 27 Апреля 2013, 16:34 | Сообщение # 7 |
маньяк-бомбист
Сейчас нет на сайте
| что-то не так - 1,2 и 5 ряд должны били заменится на 88, а в итоге вышло 1,3 и 5.
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
|
|
| |
x_X | Дата: Суббота, 27 Апреля 2013, 16:57 | Сообщение # 8 |
был не раз
Сейчас нет на сайте
| Shevron_7, я переменную schet обнулил не в том месте, убери и засунь его в первый цикл Код for (int i = 0; i < 5; ++i) { //... }
Сообщение отредактировал x_X - Суббота, 27 Апреля 2013, 17:03 |
|
| |
Shevron_7 | Дата: Суббота, 27 Апреля 2013, 17:29 | Сообщение # 9 |
маньяк-бомбист
Сейчас нет на сайте
| А теперь 1 и 5 :(
Вот собсно вся программа: Код #include <cstdlib> #include <iostream> #include <math.h>
using namespace std;
int main() { setlocale(0,""); double u; int schet = 0,matr[5][4] = { {4,9,25,36}, { 7,8,6,16 }, { 1,3,5,4 }, { 2,3,5,8 }, { 4,4,5,4 } }; cout<<"Исходная матрица: \n"; for(int r=0;r<5;r++) { for(int s=0;s<4;s++) { cout<<matr[r][s]<<'\t'; } cout<<"\n\n\n"; } cout<<"корни квадратные из элементов первого ряда: "; for(int x=0;x<4;x++) { u = matr[0][x]; cout<<sqrt(u)<<" "; } cout<<"\n\nМатрица из замененными рядами:\n";
for(line = 0;line < 5;line++){ for(i;i < 4;i++) {if (i<4) {if (matr[line][i]%4==0) {schet++;};};};};
for (int i = 0; i < 5; ++i) { for (int j = 0; j < 4; ++j) { if (matr[i][j] % 4 == 0) schet ++; if (schet > 2) { for (int k = 0; k < 4; ++k) matr[i][k] = 88; break; } }; schet = 0; } for (int i = 0; i < 5; ++i) { for (int j = 0; j < 4; ++j) cout << matr[i][j] << " "; cout << endl; } int abc; cin>>abc; }
Может ее как-то упростить можно (наверное 100% можно)
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
Сообщение отредактировал Shevron_7 - Суббота, 27 Апреля 2013, 18:04 |
|
| |
x_X | Дата: Суббота, 27 Апреля 2013, 17:37 | Сообщение # 10 |
был не раз
Сейчас нет на сайте
| Цитата (Shevron_7) for(line = 0;line < 5;line++){ for(i;i < 4;i++) {if (i<4) {if (matr[line][i]%4==0) {schet++;};};};}; эта строка лишняя
Цитата (Shevron_7) но если в ряде есть больше 2 элементов кратных 4 нужно все элементы этого ряда заменить на 88 больше 2-х, значит по условию должна замениться только строка 5, изменив условие на if (schet >= 2) будут заменены строки 1 2 и 5
Сообщение отредактировал x_X - Суббота, 27 Апреля 2013, 17:43 |
|
| |
Shevron_7 | Дата: Суббота, 27 Апреля 2013, 18:05 | Сообщение # 11 |
маньяк-бомбист
Сейчас нет на сайте
| О, спасибо!!!! все работает как надо
Добавлено (27.04.2013, 18:05) --------------------------------------------- Готовая программа: Код #include <cstdlib> #include <iostream> #include <math.h>
using namespace std;
int main() { setlocale(0,""); double u; int schet = 0,matr[5][4] = { {4,9,25,36}, { 7,8,6,16 }, { 1,3,5,4 }, { 2,3,5,8 }, { 4,4,5,4 } }; cout<<"Исходная матрица:\n\n"; for(int r=0;r<5;r++) { for(int s=0;s<4;s++) { cout<<matr[r][s]<<'\t'; } cout<<"\n\n\n"; } cout<<"Корни квадратные из элементов первого рядка матрицы: "; for(int x=0;x<4;x++) { u = matr[0][x]; cout<<sqrt(u)<<" "; } cout<<"\n\nМатрица из замененными рядами:\n\n";
for (int i = 0; i < 5; ++i) { for (int j = 0; j < 4; ++j) { if (matr[i][j] % 4 == 0) schet ++; if (schet >= 2) { for (int k = 0; k < 4; ++k) matr[i][k] = 88; break; } }; schet = 0; } for (int i = 0; i < 5; ++i) { for (int j = 0; j < 4; ++j) cout << matr[i][j] << "\t"; cout<<"\n\n\n"; } int abc; cin>>abc; }
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
Сообщение отредактировал Shevron_7 - Суббота, 27 Апреля 2013, 18:05 |
|
| |
|