М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
chingiz2008
chingiz2008
21.04.2020 01:49 •  Информатика

Нужна , нужно написать подпрограмму на языке си, которая
находит номер первого столбца таблицы, для которого скалярное произведение на заданный вектор минимально.
вот мой код, но там какая - то ошибка, исправить:

const int rows = 100, cols = 100; //максимальный размер массва 100х100
double a[rows][cols];
double table = a[rows][cols];
bool scal(double & table, int n, int m, int & n)
{
//подпрограмма находит номер первого столбца таблицы, для которого скалярное произведение на заданный вектор минимально;
//входные параметры: table - двумерный статический массив вещественных чисел;
// n, m - количество строк и столбцов таблицы;
// выходной параметр: n - искомый номер столбца.
// функция возвращает true - если результат найден
// false - если размеры заданы некорректно, в этом случае n - неопределено

double vec[rows];
int i, j;
double s = 0, t;
bool er = false;
setlocale(lc_all, "rus");
srand(time(null));
printf("заданный вектор: ");
for (i = 0; i < n; i++) {
vec[i] = rand();
printf("%lf ", vec[i]); //задаём координаты вектора псевдослучайными числами
}
for (j = m - 1; j> =0; --j) { //проверяем столбцы таблицы, начиная с последнего
for (i = 0; i < n; i ++)
s += a[i][j] * vec[i]; //считаем скалярное произведение столбца массива на заданный вектор
if (j = m - 1) {
n = m - 1;
t = s;
s = 0;
}
else {
if (s < t) //если скалярное произведение данного столбца на вектор меньше чем произведение предыдущего, присваиваем переменной n номер этого столбца
n = j;
t = s; //присваиваем переменной t произведение данного столбца на вектор для дальнейшнго сравнения
s = 0;
} //переменную s зануляем, чтобы посчитать произведение следующего столбца на вектор
}
if (n > 0 || m > 0 || n < = rows || m < = cols) er = true; //проверка входных параметров на допустимость
return er;
}

👇
Открыть все ответы
Ответ:
cleverprincess
cleverprincess
21.04.2020
Var a: array of integer;
n, sum, max: integer;
 
begin
   sum:=0;
   write('Введите натуральное число n: ');
   readln(n);
   a := new integer[n];
 
  write('Введите действительные числа: ');
  for var i:=0 to a.Length-1 do
    read(a[i] );
   
  write('Сумма равна: ');
  for var i:=0 to a.Length-1 do
    sum:=sum+a[i];
  writeln(sum);  
 
  write('Максимальный элемент равен: ');
  max := a[0];
  for var i:=0 to a.Length-1 do
    if a[i]>max then
    begin
      max := a[i];
    end;
  writeln(max);
 
  write('S = (А1+ А2+ …,+ Аn) + max (А1, А2, …, Аn) = ');
  sum:=sum+max;
  write(sum);
 
end.
4,6(100 оценок)
Ответ:
MudriyMudrec
MudriyMudrec
21.04.2020

#include <iostream>

using namespace std;

int main(){

int number = 0;

cout << "Enter the month number: ";

cin >> number;

if ((number >= 1) and (number <= 12)){

 if (number < 8){

  if (number % 2 != 0){

   cout << "31 days";

  }else if((number % 2 == 0) and (number != 2)){

   cout << "30 days";

  }else if(number == 2){

   cout << "28 days";

  }

 }else if (number > 7){

 if (number % 2 != 0){

  cout << "30 days";

 }else if(number % 2 == 0){

  cout << "31 days";

  }

 }

}else{

 cout << "Please enter a valid number";

}

return 0;

}

4,7(48 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ