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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2008, 22:38   #1
slivochny
 
Регистрация: 20.11.2008
Сообщений: 6
По умолчанию помогите с массивами

помогите написать прогу по массивам, пожалуйста(((
В двумерном N * K массиве целых чисел проверить, являются ли строки арифметической или геометрической прогрессией.

Размеры массива задается с клавиатуры. Элементы массива вводятся с клавиатуры.
slivochny вне форума Ответить с цитированием
Старый 21.11.2008, 00:25   #2
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Очень простая задача... Ты сначала подумай своей головой!!!
Если язык не оч. знаешь, то хотя бы алгоритм опиши!!!
StarWorm вне форума Ответить с цитированием
Старый 21.11.2008, 00:35   #3
slivochny
 
Регистрация: 20.11.2008
Сообщений: 6
По умолчанию

я понимаю, что задача простая.........просто времени уже в обрез да и язык я вообще не особо знаю........
а алгоритм.......в принципе там все по порядку и просто: сначала задать размеры массива; ввести сам массив; проверить построчно арифметическую и геометрическую прогрессии......
slivochny вне форума Ответить с цитированием
Старый 21.11.2008, 00:42   #4
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Я только завтра смогу написать... Тебя устроит?!?!

P.S. потому что сейчас я ложусь спать!!!
StarWorm вне форума Ответить с цитированием
Старый 21.11.2008, 00:47   #5
slivochny
 
Регистрация: 20.11.2008
Сообщений: 6
По умолчанию

хорошо)
буду благодарен))
только на чистом Си (без ++)))
slivochny вне форума Ответить с цитированием
Старый 21.11.2008, 11:20   #6
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Напиши мне какой нить массив для отладки... Размером хотя бы 7х5!
StarWorm вне форума Ответить с цитированием
Старый 21.11.2008, 12:56   #7
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Смущение

Цитата:
Сообщение от slivochny Посмотреть сообщение
помогите написать прогу по массивам, пожалуйста(((
В двумерном N * K массиве целых чисел проверить, являются ли строки арифметической или геометрической прогрессией.

Размеры массива задается с клавиатуры. Элементы массива вводятся с клавиатуры.

Вот тебе работоспособный код... Его только поправить относительно ВВода с клавиатуры и т.п.
Код:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <cmath>		//можешь написать <math.h>

using namespace std;

void fillArifm(int** arr,int dimStr,int dimCol,bool* isArifm)
{
	if((dimCol==0)||(!arr))
	{
		cout<<"Your array is empty!!!\n";
		return;
	}
	else if(dimCol<3)
	{
		cout<<"Your array is too short!!!\n";
		return;
	}
	else
	{
		for(int i=0;i<dimStr;i++)
		{
			int d=arr[i][1]-arr[i][0];
			if(d==0)
			{
				isArifm[i]=false;
				continue;
			}
			for(int j=1;j<dimCol-1;j++)
			{
				if((arr[i][j]+d)!=arr[i][j+1])
				{
					isArifm[i]=false;
					break;				
				}
				isArifm[i]=true;
			}
		}
	}
}

void fillGeomet(int** arr,int dimStr,int dimCol,bool* isGeomet)
{
	float eps=0.0001;
	if((dimCol==0)||(!arr))
	{
		cout<<"Your array is empty!!!\n";
		return;
	}
	else if(dimCol<3)
	{
		cout<<"Your array is too short!!!\n";
		return;
	}
	else
	{
		for(int i=0;i<dimStr;i++)
		{
			float d=arr[i][1]/arr[i][0];
			if(fabs(d-1.0)<eps)
			{
				isGeomet[i]=false;
				continue;
			}
			for(int j=1;j<dimCol-1;j++)
			{
				if(fabs((arr[i][j]*d)-arr[i][j+1])>eps)
				{
					isGeomet[i]=false;
					break;				
				}
				isGeomet[i]=true;
			}
		}
	}
}

void printAll(int** arr,int dimStr,int dimCol,bool* isArifm,bool* isGeomet)
{
	cout.width(4*dimCol);
	cout.setf(ios::adjustfield);
	cout<<"Your array:";
	cout.width(20);
	cout<<"is Arifmetic:";
	cout.width(20);
	cout<<"is Geometric:";
	cout<<"\n\n";

	for(int i=0;i<dimStr;i++)
	{
		for(int j=0;j<dimCol;j++)
		{
			cout.width(3);
			cout<<arr[i][j];
			cout<<"|";
		}
		cout.width(20);
		if(isArifm[i]==false)
			cout<<"false";
		else
			cout<<"true";
		cout.width(20);		
		if(isGeomet[i]==false)
			cout<<"false";
		else
			cout<<"true";
		cout<<"\n\n";
	}
}

int main()
{
	int dimStr=0,dimCol=0;
	//cout<<"Enter dimensions of array: ";
	//cin>>dimStr>>dimCol;
	dimStr=7;dimCol=5;

	int probArr[7][5]=
	{1,2,3,4,5,
	1,3,9,27,81,
	2,4,8,16,32,
	5,10,15,20,25,
	1,1,1,1,1,
	6,5,4,7,5,
	2,6,8,5,3};

	int** arr=new int*[dimStr];
	for(int i=0;i<dimStr;i++)
		arr[i]=new int[dimCol];

	bool* isArifm=new bool[dimStr];
	bool* isGeomet=new bool[dimStr];
		
	for(int i=0;i<dimStr;i++)
	{
		for(int j=0;j<dimCol;j++)
			arr[i][j]=probArr[i][j];
		isArifm[i]=isGeomet[i]=false;
	}

	fillArifm(arr,dimStr,dimCol,isArifm);
	fillGeomet(arr,dimStr,dimCol,isGeomet);
	printAll(arr,dimStr,dimCol,isArifm,isGeomet);
	
	delete [] isArifm;
	delete [] isGeomet;
	for(int i=0;i<dimStr;i++)
		delete [] arr[i];
	delete [] arr;
	getch();
	return 0;
}
StarWorm вне форума Ответить с цитированием
Старый 21.11.2008, 12:57   #8
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Смущение

Если есть какие либо вопросы... То спрашивай!!!
StarWorm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с массивами!!! VILLIREX Помощь студентам 10 24.06.2009 17:54
помогите с массивами Ibmsystem Помощь студентам 1 21.04.2008 08:10
Помогите с массивами Юль_кА Паскаль, Turbo Pascal, PascalABC.NET 2 10.04.2008 08:39