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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.09.2014, 21:36   #1
Banamikbeni
Новичок
Джуниор
 
Регистрация: 27.12.2013
Сообщений: 2
По умолчанию Арифметические Операции С Элементами Массива

Добрый день!
Никак не могу сообразить, почему получается следующий результат

Код:
#include<iostream>using namespace std;int main(){****************double a[M[N = { ************************{2.9,5.6,8.9,6.3,1.7,2.0,0.5,1.0,9.3},************************{-0.4,4.3,5.0,1.2,1.8,-0.8,2.7,0.6,5.1},************************{-1.0,-0.9,5.8,1.5,2.5,0.8,3.8,9.2,2.0},************************{0.6,3.4,7.4,13.2,7.3,10.1,12.3,10.6,14.0},************************{-1.0,-4.3,-4.7,-3.2,7.7,5.4,1.7,7.6,1.4},************************{-0.7,-3.4,-1.1,-3.4,-4.5,0.8,1.5,3.4,-6.5},************************{-1.4,-2.0,-2.1,-6.3,-2.2,-3.0,1.7,8.8,1.6},************************{-1.2,-3.9,-2.8,-6.4,-0.5,-1.3,-1.1,13.6,3.3}************************ };double x = (a[1[0/a[0[0) * a[0[0;cout << a[1[0 - (a[1[0/a[0[0) * a[0[0;************return 0;}

Должно выводить 0, а выдаёт какой-то невразумительный ответ -5.55112e-017

Подскажите пожалуйста, что не так?
Banamikbeni вне форума
Старый 16.09.2014, 17:55   #2
marenko.lilia
Пользователь
 
Аватар для marenko.lilia
 
Регистрация: 25.12.2013
Сообщений: 91
По умолчанию

Вам никто не хочет ответить, потому что вы код вставили в одну строку.

Постаралась и привела ваш код к нормальному виду.
Код:
#include<iostream>
using namespace std;

int main()
{
	const int M = 8;
	const int N = 9;
	
	double a[M][N] 
	{ 
		{2.9, 5.6, 8.9, 6.3, 1.7, 2.0, 0.5, 1.0, 9.3},
		{-0.4, 4.3 ,5.0 ,1.2, 1.8, -0.8, 2.7, 0.6, 5.1},
		{-1.0, -0.9, 5.8, 1.5, 2.5, 0.8, 3.8, 9.2, 2.0},
		{0.6, 3.4, 7.4, 13.2, 7.3, 10.1, 12.3, 10.6, 14.0},
		{-1.0, -4.3, -4.7, -3.2, 7.7, 5.4, 1.7, 7.6, 1.4},
		{-0.7, -3.4, -1.1, -3.4, -4.5, 0.8, 1.5, 3.4, -6.5},
		{-1.4, -2.0, -2.1, -6.3, -2.2, -3.0, 1.7, 8.8, 1.6},
		{-1.2, -3.9, -2.8, -6.4, -0.5, -1.3, -1.1, 13.6, 3.3}
	};

	double x = (a[1][0] / a[0][0]) * a[0][0];
	
	cout << a[1][0] - x; // наверное (a[1][0] / a[0][0]) * a[0][0]  лучше заменить на x
	
	return 0;
}
Ребята, кто умный - подскажите автору темы в чем проблема
marenko.lilia вне форума
Старый 16.09.2014, 18:31   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Вероятно у вас проблема с математикой:

http://rextester.com/ITIO75183

Код:
#include<iomanip>
#include<iostream>
using namespace std;

template<class T> ::ostream& Out(const T& value, const size_t width=4)
{
    return
    cout << ::std::setfill(' ') 
         << ::std::setw(width) 
         << value<<"    ";
}

template<class T, size_t N, size_t M> void ShowArray(const T  (&Arr)[N][M])
{
    for (int i = 0; i < N; i++)
    {    
        for (int n = 0; n < M; n++)
           Out(Arr[i][n]);
        cout<<'\n'; 
    }
    cout<<'\n'; 
}

int main()
{
	const double a[8][9] 
	{ 
		{ 2.9,  5.6,  8.9,  6.3,  1.7,  2.0,  0.5,  1.0,  9.3},
		{-0.4,  4.3,  5.0,  1.2,  1.8, -0.8,  2.7,  0.6,  5.1},
		{-1.0, -0.9,  5.8,  1.5,  2.5,  0.8,  3.8,  9.2,  2.0},
		{ 0.6,  3.4,  7.4, 13.2,  7.3, 10.1, 12.3, 10.6, 14.0},
		{-1.0, -4.3, -4.7, -3.2,  7.7,  5.4,  1.7,  7.6,  1.4},
		{-0.7, -3.4, -1.1, -3.4, -4.5,  0.8,  1.5,  3.4, -6.5},
		{-1.4, -2.0, -2.1, -6.3, -2.2, -3.0,  1.7,  8.8,  1.6},
		{-1.2, -3.9, -2.8, -6.4, -0.5, -1.3, -1.1, 13.6,  3.3}
	};
    
    ShowArray(a);
    
    const auto b = a[1][0];
    const auto c = a[0][0];
    const auto x = (b/c)*c;
    
    cout << "( "<<b<<" / "<<c<<" ) * "<< c <<" = "<< x<< endl;
}
_Bers вне форума
Старый 16.09.2014, 18:55   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

И вообще, что за деление без проверки на ноль?
Это ладно в твоем случае будет все нормально, но а если бы ты не знал ничего о входных данных?

_Bers
Не не, ноль должен быть, ты первый (a[1][0] -) пропустил.
marenko.lilia сделала правильно, не знаю как ты разобрала хрень ту что он написал.
coNsept вне форума
Старый 17.09.2014, 02:01   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от coNsept Посмотреть сообщение
Не не, ноль должен быть, ты первый (a[1][0] -) пропустил.
Особенность вывода консоли.
Это можно настраивать.

http://rextester.com/JPN17726

Код:
#include<iomanip>
#include<iostream>
using namespace std;

template<class T> ::ostream& Out(const T& value, const size_t width=4)
{
    return
    cout << ::std::setfill(' ') 
         << ::std::setw(width) 
         << value<<"    ";
}

template<class T, size_t N, size_t M> void ShowArray(const T  (&Arr)[N][M])
{
    for (int i = 0; i < N; i++)
    {    
        for (int n = 0; n < M; n++)
           Out(Arr[i][n]);
        cout<<'\n'; 
    }
    cout<<'\n'; 
}

int main()
{
	const double a[8][9] 
	{ 
		{ 2.9,  5.6,  8.9,  6.3,  1.7,  2.0,  0.5,  1.0,  9.3},
		{-0.4,  4.3,  5.0,  1.2,  1.8, -0.8,  2.7,  0.6,  5.1},
		{-1.0, -0.9,  5.8,  1.5,  2.5,  0.8,  3.8,  9.2,  2.0},
		{ 0.6,  3.4,  7.4, 13.2,  7.3, 10.1, 12.3, 10.6, 14.0},
		{-1.0, -4.3, -4.7, -3.2,  7.7,  5.4,  1.7,  7.6,  1.4},
		{-0.7, -3.4, -1.1, -3.4, -4.5,  0.8,  1.5,  3.4, -6.5},
		{-1.4, -2.0, -2.1, -6.3, -2.2, -3.0,  1.7,  8.8,  1.6},
		{-1.2, -3.9, -2.8, -6.4, -0.5, -1.3, -1.1, 13.6,  3.3}
	};
    
    ShowArray(a);
    
    const auto b = a[1][0];
    const auto c = a[0][0];
    const auto x = (b/c)*c;
    
    cout<< setiosflags(ios::fixed) ;
    
    cout << "( "<<b<<" / "<<c<<" ) * "<< c <<" = "<< x<< endl;
    cout << "b - x = " << b - x << endl;
}
_Bers вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Арифметические операции nikita-92 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 11.04.2013 00:08
Арифметические операции. Saintpatrick38 Помощь студентам 2 05.04.2013 09:04
Арифметические операции swillrocker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 02.10.2012 21:31
Арифметические действия над элементами массива. danilchican Паскаль, Turbo Pascal, PascalABC.NET 2 15.11.2011 22:53