Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2008, 21:32   #1
StartMis
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 175
По умолчанию C++ и массивы

в консольном режиме мне нужно с помощью датчика случайных чисел заполнить двоичную матрицу 5х10. Определить номер строки с наибольшим количеством нулей. Сам массив я заполняю, а что дальше... Помогите пожайлуста кто может
StartMis вне форума Ответить с цитированием
Старый 19.12.2008, 21:52   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вроде работает.

Код:
#include <iostream>
#include <time.h>
#include <conio.h>

using namespace std;

int main(){
int mas[5][10];
int i,j,k;
int n,m,number;
string s;
char *buf;
 srand(time(NULL));
for(i=0;i<5;i++)
 for(j=0;j<10;j++)
  mas[i][j] = rand()%2;

for(i=0;i<5;i++)
{
 for(j=0;j<10;j++)
  cout<<mas[i][j]<<" ";
 cout<<endl;
}
//-------------
n=0;
number=0;
for(i=0;i<5;i++)
 {
  m=0;
  for(j=0;j<10;j++)
  {
  s = _itoa(mas[i][j],buf,10);
   for(k=0;k<s.length();k++)
    if(s[k]=='0') m++;

  }
  if(m>n) { n=m; number=i; }
 }
 cout << endl << number+1 << endl;
 getch();
 return 0;
}
Знаю, что можно проще, но это пока первое, что пришло в голову )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 19.12.2008 в 21:55.
Sazary вне форума Ответить с цитированием
Старый 19.12.2008, 22:00   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот. Если правильно понял задание, то, вроде, правильно.

Код:
#include <iostream>
#include <time.h>
#include <conio.h>

using namespace std;

int main(){
int mas[5][10];
int i,j,k;
int n,m,number;

 srand(time(NULL));
for(i=0;i<5;i++)
 for(j=0;j<10;j++)
  mas[i][j] = rand()%2;

for(i=0;i<5;i++)
{
 for(j=0;j<10;j++)
  cout<<mas[i][j]<<" ";
 cout<<endl;
}
//-------------
n=0;
number=0;
for(i=0;i<5;i++)
 {
  m=0;
  for(j=0;j<10;j++)
  {
  if(mas[i][j]==0) m++;

  }
  if(m>n) { n=m; number=i; }
 }
 cout << endl << number+1 << endl;
 getch();
 return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 19.12.2008, 22:07   #4
StartMis
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 175
По умолчанию

Огромнейшее вам спосибо Sazary все точто нужно.Помогите еще раз
Дан массив состоящий из 1000 целых чисел.
а)Вывести все числа которые встречаются в этом массиве несколько раз.
б)Вывести все числа которые встречаются в массиве только по одному разу.
StartMis вне форума Ответить с цитированием
Старый 19.12.2008, 22:45   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Метод основан на сортировке.
Первый случай:
Код:
#include <iostream>
#include <time.h>
#include <conio.h>

using namespace std;

#define NN 1000

void qvsrt(int *aa, int N)
{
 int i=0, j=N;
 int temp,p;
 p = aa[(int)(N/2)];
 do {
    while(aa[i] < p) i++;
    while(aa[j] > p) j--;
    if(i<=j) {
        temp = aa[i];
        aa[i] = aa[j];
        aa[j] = temp;
        i++;
        j--;
        }

    } while(i<=j);
 if(j > 0 ) qvsrt(aa,j);
 if(i < N) qvsrt(aa+i, N-i);
}

int main(){
int mas[NN];
int i,k;

srand(time(NULL));
for(i=0;i<NN;i++)
 mas[i] = rand()%100;

qvsrt(mas, NN);


k=0;
for(i=1;i<NN+1;i++)
{
    if(mas[i]!=mas[i-1])
     {
       if(k!=0) cout << mas[i-1] << endl;
       k=0;
      }
    else k++;

}
 getch();
 return 0;
}
Во втором случае заменяете главный цикл на:
Код:
for(i=1;i<NN+1;i++)
{
    if(mas[i]!=mas[i-1])
     {
       if(k==0) cout << mas[i-1] << endl;
       k=0;
      }
    else k++;

}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
Массивы на C++ Wia Помощь студентам 6 06.12.2008 16:09
массивы ShenDy Общие вопросы C/C++ 4 17.04.2008 00:01
массивы ribka Помощь студентам 2 08.12.2007 23:53