Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 426
∙ повысить рейтинг »
Асмик Гаряка
Статус: Советник
Рейтинг: 75
∙ повысить рейтинг »
D-mon55
Статус: 2-й класс
Рейтинг: 75
∙ повысить рейтинг »

∙ С / С++

Номер выпуска:1855
Дата выхода:02.05.2016, 18:51
Администратор рассылки:Андрей Кузнецов aka Dr_Andrew (Старший модератор)
Подписчиков / экспертов:17 / 14
Вопросов / ответов:4 / 4

Консультация # 189279: Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
int main()
{
	setlocale(LC_ALL, "Russian");
	int a, b, c; float x1, x2;
	cout <&
...
Консультация # 189280: Здравствуйте! Прошу помощи в следующем вопросе: i
nt main()
{
int N, F = 1;
setlocale(LC_ALL, "Russian");
cout << "Введите N:
...
Консультация # 189281: Здравствуйте! У меня возникли сложности с таким вопросом: Задание: Найти среднее арифметическое положительных элементов главной и побочной диагоналей матрицы действительных чисел А(5Х5). ...
Консультация # 189282: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Задание: Найти количество элементов одномерного массива А(10), в значении которых установлен пятый бит. После этого у всех элементов массива инвертировать 3 бит и новые значения записать в массив В(10). Вывести в шестнадцатеричном виде массивы А и В. <...
< /span>

Консультация # 189279:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

int main()
{
	setlocale(LC_ALL, "Russian");
	int a, b, c; float x1, x2;
	cout << "Введите коэффициент a: ";
	cin >> a;
	cout << "Введите коэффициент b: ";
	cin >> b;
	cout << "Введите коэффициент c: ";
	cin >> c;
	if ((a == 0) && (b == 0) && (c == 0)) cout << "Бесконечное мн-во решений" << endl;
	else
		if ((a == 0) && (b != 0) && (c != 0))
		{
			x1 = -c / b;  cout << "x= " << x1 << endl;
		}
		else
			if ((a == 0) && (b == 0) && (c != 0))
			{
				ЧТО БУДЕТ ЗДЕСЬ?
			}
			else
				if ((b*b - 4 * a*c) < 0)
				{
					x1 = (-b + sqrt((b*b - 4 * a*c)*(-1))) / (2 * a);
					x2 = (-b - sqrt((b*b - 4 * a*c)*(-1))) / (2 * a);
					cout << "x1= " << x1 << " " << "x2= " << x2 << endl;
				}
				else
					if ((b*b - 4 * a*c) == 0)
					{
						x1 = -b / (2 * a);
						cout << setprecision(4) << "1 Корень x= " << x1;
					}
					else
					{
						x1 = (-b - sqrt(b*b - 4 * a*c)) / (2 * a);
						x2 = (-b + sqrt(b*b - 4 * a*c)) / (2 * a);
						cout << setprecision(4) << " x1= " << x1 << endl << " x2= " << x2 << endl;
					}
	system("pause");
	getchar();
	return 0;
}

Дата отправки: 27.04.2016, 18:31
Вопрос задал: Посетитель - 399158 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Коцюрбенко Алексей aka Жерар (Мастер-Эксперт):

Здравствуйте, Посетитель - 399158!

Если a = b = 0 и c ≠ 0, то уравнение решения не имеет. Кроме того, при b2-4ac<0 решением будут два комплексно-сопряжённых корня, определяемые по формуле x1,2 = -b/2a ± i*√4ac-b2. Также можно немного оптимизировать код, заранее вычислив выражение b2-4ac один раз. С учётом этого программа примет следующий вид:

Код (JavaScript) :: выделить код
#include "math.h"
#include "locale.h"
#include "iostream.h"
#include "iomanip.h"

int main() 
{
setlocale(LC_ALL, "Russian");
int a, b, c;
float D, x1, x2, y1, y2;
cout << "Введите коэффициент a: ";
cin >> a;
cout << "Введите коэффициент b: ";
cin >> b;
cout << "Введите коэффициент c: ";
cin >> c;
 if (a == 0)
 {
  if (b == 0)
  {
   if (c == 0) cout << "Бесконечное множество решений" << endl;
   else cout << "Нет решения" << endl;
  }
  else cout << "Один корень: x = " << -c / b << endl;
 }
 else
 {
 D = b * b - 4 * a * c;
  if (D < 0)
  {
  x1 = -b / (2 * a);
  x2 = sqrt(-D) / (2 * a);
  cout << setprecision(4) << "Два комплексно-сопряжённых корня: x1 = " << x1 << "+i*" << x2 << " " << "x2= " << x1 << "-i*" << x2  << endl;
  }
  else
   if (D == 0)
   {
   x1 = -b / (2 * a);
   cout << setprecision(4) << "Один корень: x= " << x1;
   }
   else
   {
   x1 = (-b - sqrt(D)) / (2 * a);
   x2 = (-b + sqrt(D)) / (2 * a);
   cout << setprecision(4) << "Два вещественных корня: x1= " << x1 << " x2= " << x2 << endl;
   }
 }
system("pause");
getchar();
return 0;
}

Консультировал: Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)
Дата отправки: 28.04.2016, 07:00
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 189280:

Здравствуйте! Прошу помощи в следующем вопросе:

i

nt main()
{
int N, F = 1;
setlocale(LC_ALL, "Russian");
cout << "Введите N:";
cin >> N;
if (N < 0) cout << "Введите N>0" << endl;
else
{
for (int i = 2; i <= N; i++)
F = F*i;
cout << N << "!=" << F << endl;
}
system("pause");
return 0;
}


Как мне сделать через DO ... WHILE?

Дата отправки: 27.04.2016, 18:32
Вопрос задал: Посетитель - 399158 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Коцюрбенко Алексей aka Жерар (Мастер-Эксперт):

Здравствуйте, Посетитель - 399158!

Например, так:

Код (JavaScript) :: выделить код
#include "locale.h"
#include "iostream.h"

int main()
{
int N, F = 1;
setlocale(LC_ALL, "Russian");
cout << "Введите N: ";
cin >> N;
 if (N < 0) cout << "Введите N>0" << endl;
 else
 {
 int i = 1;
  do F = F*(i++); while (i<=N);
 cout << N << "!=" << F << endl;
 }
system("pause");
return 0;
}

Консультировал: Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)
Дата отправки: 28.04.2016, 07:09
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 189281:

Здравствуйте! У меня возникли сложности с таким вопросом:
Задание: Найти среднее арифметическое положительных элементов главной и побочной
диагоналей матрицы действительных чисел А(5Х5).


#define n 5 
#define m 5 
int main()
{
	setlocale(LC_ALL, "Russian");
	int arr[n][m];
	float sum = 0;
	int count = 0;
	for (int i = 0; i<n; i++)
	{
		for (int j = 0; j<m; j++)
		{
			arr[i][j] = -1 + rand() % 3;
			cout << setw(4) << arr[i][j];
			if (((i == j) || (i + j == 2)) && (arr[i][j]>0)) sum = sum + arr[i][j];
			if (j == 4) cout << endl;
		}
		cout << endl;
	}
	sum = (sum - arr[2][2]) / 9;
	cout << "Среднее ариф. эл-в: " << sum << endl;
	system("pause");
	return 0;
}





что мы тут делаем: if (((i == j) || (i + j == 2)) && (arr[i][j]>0)) sum = sum + arr[i][j]; ????

и тут, почему диапазон arr[2][2] именно такой: sum = (sum - arr[2][2]) / 9; ???

Дата отправки: 27.04.2016, 18:36
Вопрос задал: Посетитель - 399158 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Посетитель - 399158!
Программа ошибочная.
Посмотрите, как я сделал

#include <windows.h>
#include <iostream>
#include <iomanip>
#include <locale>
#include <time.h>

using namespace std;

#define n 5 

int main()
{
   setlocale(LC_ALL, "Russian");
   int arr[n][n];
   float sum[2] = {0,0};
   int count[2] = {0,0};

   srand(time(NULL));
   for (int i = 0; i<n; i++)
   {
      for (int j = 0; j<n; j++)
      {
         arr[i][j] = -100 + rand() % 200;
         cout << setw(4) << arr[i][j];
         if ((i == j) && (arr[i][j]>0)) 
		 {
			 sum[0] = sum[0] + arr[i][j];
			 count[0]++;
		 }
         if ((i == n-j-1) && (arr[i][j]>0)) 
		 {
			 sum[1] = sum[1] + arr[i][j];
			 count[1]++;
		 }
      }
      cout << endl << endl;
   }
   if (count[0])
		cout << "Среднее ариф. эл-в на главной диагонали: " << sum[0]/count[0] << endl;
   else
		cout << "На главной диагонали нет положительных элементов!" << endl;
   
   if (count[1])
		cout << "Среднее ариф. эл-в на побочной диагонали: " << sum[1]/count[1] << endl;
   else
		cout << "На побочной диагонали нет положительных элементов!" << endl;
   system("pause");
   return 0;
}

Вот поиск среднего арифметического положительных элементов на обеих диагоналях вместе
#include <windows.h>
#include <iostream>
#include <iomanip>
#include <locale>
#include <time.h>

using namespace std;

#define n 5 

int main()
{
   setlocale(LC_ALL, "Russian");
   int arr[n][n];
   float sum = 0;
   int count = 0;

   srand(time(NULL));
   for (int i = 0; i<n; i++)
   {
      for (int j = 0; j<n; j++)
      {
         arr[i][j] = -100 + rand() % 200;
         cout << setw(4) << arr[i][j];
         if (((i == j) || (i == n-j-1)) && (arr[i][j]>0)) 
		 {
			 sum = sum + arr[i][j];
			 count++;
		 }
      }
      cout << endl << endl;
   }
   if (count)
		cout << "Среднее ариф. эл-в на диагоналях: " << sum/count << endl;
   else
		cout << "На диагоналях нет положительных элементов!" << endl;
   
   system("pause");
   return 0;
}

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 28.04.2016, 16:31
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 189282:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Задание:
Найти количество элементов одномерного массива А(10), в значении которых
установлен пятый бит. После этого у всех элементов массива инвертировать 3 бит и новые
значения записать в массив В(10). Вывести в шестнадцатеричном виде массивы А и В.


int main()
{
	setlocale(LC_ALL, "Russian");
	int a[10]; int sum = 0, count = 0;
	int b[10];
	srand(time(0));
	cout << endl << "Массив А" << endl;
	for (int i = 0; i < size(a); i++)
	{
		a[i] = rand() % 33;
		cout << a[i] << " ";
		if (a[i] & 16)  count++;
		b[i] = a[i] ^ 4;

	}
	cout << endl << "Массив B" << endl;
	for (int i = 0; i < size(a); i++)
		cout << hex << b[i] << " ";
	cout << endl << "5 бит устновлен в " << count << " элементах" << endl;
	system("pause");
	return 0;
}



что тут делает это: size(a) ??

Дата отправки: 27.04.2016, 18:37
Вопрос задал: Посетитель - 399158 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Посетитель - 399158!
Предлагаю свой вариант
Под size(a) понималось размер массива а
Я заменил на sizeof(a)/sizeof(int), т.к. нельзя писать size(a)
В программировании биты считаются с 0, а не с 1, поэтому подправил маски битов
Увеличил "размах" чисел до 256
Массив а тоже ж надо выводить в hex

#include <windows.h>
#include <iostream>
#include <iomanip>
#include <locale>
#include <time.h>

using namespace std;

int main()
{
   setlocale(LC_ALL, "Russian");
   int a[10]; 
   int i, sum = 0, count = 0;
   int b[10];
   
   srand(time(0));
   
   cout << endl << "Массив А" << endl;
   for (i = 0; i < sizeof(a)/sizeof(int); i++)
   {
      a[i] = rand() % 256;
      cout << hex << a[i] << " ";
      if (a[i] & 32)  
		  count++;
      b[i] = a[i] ^ 8;
   }
   cout << endl << "Массив B" << endl;
   for (i = 0; i < sizeof(a)/sizeof(int); i++)
      cout << hex << b[i] << " ";
   cout << endl << "5 бит установлен в " << count << " элементах" << endl;
   system("pause");
   return 0;
}

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 28.04.2016, 16:47
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное