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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2009, 21:11   #1
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию C++. Двухмерные массивы.

Код:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <tchar.h>
// Дана целочисленная прямоугольная матрица. Определить:
// 1) количество строк, не содержащих ни одного нулевого элемента;
// 2) максимальное из чисел, встречающихся в заданной матрице более одного раза.

int _tmain(int argc, _TCHAR* argv[])
{
	float i,j,m,max,flag,kol,kolvo;
	for (i=0; i<10; i++) {
		for (j=0; j<10; i++) {
		arr[i,j] = rand()%256 - 128;
		cout << arr[i,j] << "\n";
		}
	}

	t=0;
	for (i=0; i<10; i++){
		flag=true;
		for (j=0; j<10; j++){
			if (a[i,j]==0) flag=false;
		}
		if (flag) inc(t);}

	flag=false;
	while (flag){
		max=a[1,1];
	for (i=0; i<10; i++) {
		for (j=0; j<10; j++) {
			if (max<a[i,j]) max=a[i,j]}}
	kol=0
		for (i=0; i<10; i++) {
			for (j=0; j<10; j++) {
			if (a[i,j]==max]) inc(kol)}}
	if (kol>1)
		flag=true
	else for (i=0; i<10; i++){
			for (j=0; j<10; j++) {
				if (a[i,j]==max) a[i,j]=-100;}}}
	
	cout << "Кол-во строк не содержащих не одного нулевого элемента\n";
	cout << t << "\n";
	cout << "Максимальное из чисел, всречающееся в заданной матрице более одного раза*:\n";
	cout << max << "\n";
	system("\npause\n");
	return 0;
}
Проверьте на наличие ошибок...
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 27.09.2009, 21:58   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

а препод, что ленится проверять?

какие вопросы?
counter вне форума Ответить с цитированием
Старый 28.09.2009, 14:06   #3
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Хотелось бы оформить в виде функций, но я С++ только начал изучать, и пока не доганяю как это сделать=( а преподам нашим по-барабану как ты сделаешь, приди и сдай=(
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 28.09.2009, 14:45   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
#include <conio.h>
#include <iostream>
#include <ctime>
// Дана целочисленная прямоугольная матрица. Определить:
// 1) количество строк, не содержащих ни одного нулевого элемента;
// 2) максимальное из чисел, встречающихся в заданной матрице более одного раза.

using namespace std;

int Stroki(int**,int,int);

void main()
{
	int **arr=NULL,n,m;

	cout<<"Matrix dimensions:\nN = ";
	cin>>n;
	cout<<"\nM = ";
	cin>>m;

	arr=new int*[n];
	for(int i=0;i<m;i++)
	{
		arr[i]=new int[m];
	}

	cout<<"\nMatrix :\n\n";

	srand(time(NULL));

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			arr[i][j]=rand()%10;
			cout<<arr[i][j]<<" ";
		}
		cout<<"\n";
	}


	cout<<"\nStrok : "<<Stroki(arr,n,m);
	
	_getch();
}


int Stroki(int **arr,int n,int m)
{
	int res=0,fl;

	for(int i=0;i<n;i++)
	{
		fl=0;
		for(int j=0;j<m;j++)
		{
			if(arr[i][j]==0)
			{
				fl=1;
			}
		}
		if(!fl) res++;
	}
	return res;
}
а что значит максимальное из чисел?
counter вне форума Ответить с цитированием
Старый 29.09.2009, 02:13   #5
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Например дана матрица:
/ 1 1 1 1 \
| 1 4 1 1 | здесь макс. из числе встречающиеся более 1-ого раза 4
| 4 1 1 1 |
\ 1 1 1 1 /
А вот здесь:
/ 1 1 1 1 \
| 1 1 1 1 | здесь макс. из числе встречающиеся более 1-ого раза 1
| 4 1 1 1 |
\ 1 1 1 1 /

Люди помогите написать вторую часть программы!!!=(

Люди добрые помогите дописать программу!!!!=(

я не могу дописать вторую часть программы=( помогите плиз!
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"

Последний раз редактировалось Stilet; 02.10.2009 в 09:50.
bpystep вне форума Ответить с цитированием
Старый 02.10.2009, 01:45   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Ищем максимальный элемент массива. Находим. Сверяем каждый элемент массива с максимальным элементом. Если макс элемент == мас[i][j] то количество раз++ .
з.ы. первое что придумал. думаю написать труда не составит уже.
з.з.ы. если я правильно понял условие.
Будь проще и люди к тебе потянутся

Последний раз редактировалось spamer; 02.10.2009 в 01:47.
spamer вне форума Ответить с цитированием
Старый 02.10.2009, 01:50   #7
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Вот код на паскале, я не могу переписать его на C++, только начинаю изучать этот Великий язык! Помогите переписать по синтаксису!

Код:
procedure maximum(a:matr;k:integer);
var
 flag:boolean;
 max,kol,i,j:integer;
begin
 flag:=false;
 repeat
  {сначала находим максимальный элемент}
  max:=a[1,1];
  for i:=1 to k do
   for j:=1 to k do
    if(max<a[i,j]) then max:=a[i,j];
  kol:=0;
  {подсчитываем, сколько раз встречается максимальный элемент}
  for i:=1 to k do
   for j:=1 to k do
    if(a[i,j]=max) then inc(kol);
  if(kol>1) then
   flag:=true
  else
  for i:=1 to k do
   for j:=1 to k do
    if(a[i,j]=max) then a[i,j]:=-100;
 until flag;
 writeln('Максимальное из чисел, всречающееся в заданной матрице более одного раза*: ',max);
end;
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 02.10.2009, 03:34   #8
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

опц... я про тебя и забыл

Код:
#include <conio.h>
#include <iostream>
#include <ctime>
// Дана целочисленная прямоугольная матрица. Определить:
// 1) количество строк, не содержащих ни одного нулевого элемента;
// 2) максимальное из чисел, встречающихся в заданной матрице более одного раза.

using namespace std;

int Stroki(int**,int,int);
int Max(int**,int,int);
int Second(int **,int,int,int);
int Cnt(int**,int,int,int);
void Search(int**,int,int);

void main()
{
	int **mas=NULL,n,m;

	cout<<"Matrix dimensions:\nN = ";
	cin>>n;
	cout<<"\nM = ";
	cin>>m;

	mas=new int[n];
	for(int i=0;i<n;i++)
	{
		mas[i]=new int[m];
	}

	cout<<"\nMatrix :\n\n";

	srand((int)time(NULL));

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			mas[i][j]=rand()%10;
			cout<<mas[i][j]<<" ";
		}
		cout<<"\n";
	}

	cout<<"\nStrok : "<<Stroki(mas,n,m)<<"\n\n";

	Search(mas,n,m);

	delete [] mas;
	_getch();
}


int Stroki(int **arr,int n,int m)
{
	int res=0,fl;

	for(int i=0;i<n;i++)
	{
		fl=0;
		for(int j=0;j<m;j++)
		{
			if(arr[i][j]==0)
			{
				fl=1;
			}
		}
		if(!fl) res++;
	}
	return res;
}

int Cnt(int **arr,int n,int m,int elem)
{
	int cnt=0;

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(arr[i][j]==elem)
				cnt++;
		}
	}
	return cnt;
}


int Max(int **arr,int n,int m)
{
	int max=arr[0][0];

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(arr[i][j]>max)
				max=arr[i][j];
		}
	}
	return max;
}

int Second(int **arr,int n,int m,int max)
{
	int second=max-1;

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(arr[i][j]>=second && arr[i][j]<max)
			{
				second=arr[i][j];
			}
		}
	}
	return second;
}


void Search(int **arr,int n,int m)
{
	int max,sec,cnt=0;
	
	bool flag=false;

	max=Max(arr,n,m);
	for(int i=0;i<n*m;i++)
	{
		sec=Second(arr,n,m,max);
		cnt=Cnt(arr,n,m,max);
		if(cnt>1)
		{
			cout<<"\nChislo "<<max;
			cout<<" vstrechaetsya "<<cnt<<" raz(a)";
			flag=true;
			break;
		}
		else
			max=sec;
	}

	if(!flag)
		cout<<"\nChisel net";
}

Последний раз редактировалось counter; 02.10.2009 в 03:58.
counter вне форума Ответить с цитированием
Старый 02.10.2009, 06:46   #9
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Не компилится=(
выдает ошибку вот на этой строчке:
Код:
int **mas=NULL,n,m;
(25 строка).
говорит что нельзя преобразовать int * в int**
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"

Последний раз редактировалось bpystep; 02.10.2009 в 06:54.
bpystep вне форума Ответить с цитированием
Старый 02.10.2009, 11:53   #10
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

это потомучто в этой строке опечатка

Код:
mas=new int*[n];
counter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Двухмерные массивы rus_rock_no_dead Помощь студентам 4 23.05.2010 23:21
Двухмерные массивы(StringGrid) MaksimSeriy Общие вопросы Delphi 3 06.04.2009 01:27
про двухмерные массивы alexov Общие вопросы C/C++ 7 07.12.2008 21:03
Двухмерные массивы (С++) Nattka Помощь студентам 2 04.12.2008 21:15
Двухмерные массивы - ошибка fudzy79 Помощь студентам 21 06.02.2008 22:50