Пятница, 29 Марта 2024, 15:42

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » количество элементов (Массивы С++)
количество элементов
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 обнулил не в том месте, убери
Код
schet  = 0;
и засунь его в первый цикл
Код
for (int i = 0; i < 5; ++i)
{
//...
}       


Сообщение отредактировал x_X - Суббота, 27 Апреля 2013, 17:03
Shevron_7Дата: Суббота, 27 Апреля 2013, 17:29 | Сообщение # 9
маньяк-бомбист
Сейчас нет на сайте
А теперь 1 и 5 sad :( sad

Вот собсно вся программа:
Код
#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
маньяк-бомбист
Сейчас нет на сайте
hands О, спасибо!!!! все работает как надо hands

Добавлено (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
Форум игроделов » Программирование » C/C++ » количество элементов (Массивы С++)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг