Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Girl-On
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
#1

динамический массив (помогите разобраться с условием и решением программы) - C++

26.05.2009, 13:32. Просмотров 756. Ответов 0
Метки нет (Все метки)

Доброе время суток, уважаемые программисты!)) Помогите разобраться со страной трактовкой задания.

Вот задание:
A<B<(C & A[B[2]])
M[K]-возвращает номер столбца матрицы с суммой элементов, большей К.
M&K-все элементы, сумма индексов которых не равна К, умножаются на отрицательное значение максимального элемента матрицы М.
M3=M1<M2-M3=M1, если матрица М1 содержит больше положительных элементов, чем М2 и наоборот.
*М-матрица;
А,В,С-массивы;
К-числовое значение

А вот требования:
1.Разработать:
а)функцию, в которой определяется размер матрицы. На основании заданных размеров выделяется место в «куче» и вызывается функция формирования элементов матрицы с помощью генератора случайных чисел. Указатель на выделенный участок памяти возвращается через параметр функции;
б) функции формирования элементов матрицы и вывода матрицы на печать;
в) функции обработки.
2. Стандартные алгоритмы (определение максимума, суммы, сортировка ит.п.) оформить отдельными функциями и вызвать при необходимости.
3. Функции должны содержать проверку соответствия размеров массивов, участвующих в операции (если необходимо). В случае различия доопределять массивы до максимального размера нулями (либо усекать до минимального размера).
4. В функции main описывается необходимое количество указателей на массивы и вычисляется выражение. На экран выводятся все промежуточные результаты (т.е. результаты работы каждой функции).

А вот то, до чего я додумалась:
Код
#include <stdio.h>
#include <alloc.h>
#include <conio.h>
#include<stdlib.h>

//формируем матрицу
float **Form_Matrix(int M, int N)
{
int i,j;
float **M1;
M1= (float**)malloc(M*sizeof(float*));
for(i=0;i<M; i++)
 {
 M1[i] = (float*)malloc(N*sizeof(float));
 for(j=0; j<N; j++)
  M1[i][j] = random(10);
 }
return M1;
}

//печатаем матрицу
void Print_Matrix(int M, int N, float **M1)
{
  int i,j;  
    for(i=0;i<M;i++,printf("\n"))
      for(j=0;j<N;j++)
      printf(" %3.1f ",M1[i][j]);
}

//находим максимальный элемент матрицы
float Max_Matrix(float **M1, int n) 
{
int i,j;
float max=-1000;
for(i=0; i<n; i++)
 for(j=0; j<n; j++)
   {
	if (M1[i][j]>M1[i][j]) max=M1[i][j];
        }
printf("%3.1f", max);
      return max;
}

float Kol(int M, int N,float **M1)
{
   int i,j,g=0;
   for (i=0; i<M; i++)
      for (j=0; j<N; j++)
      {
	if (M1[i][j]>0) g++;
        }
printf("%3.1f",g);
      return g;
 }

//находим номер столбца матрицы с суммой элементов, большей К
float Sum_Matrix(int M, int N,float **M1)
{
 float summa;
 int i,j,num_j; 
  for(j=0;j<N;j++)
   { summa=0;
    for(i=0;i<M;i++)
      summa+=M1[i][j];
     }if (summa>N) num_j=j;
  
printf("%3.1f", num_j);
 return num_j;
}

//находим M3=M1<M2-M3=M1, если матрица М1 содержит больше положительных элементов, чем М2 и наоборот
float **Form_M3(int M, int N, float **M1, float **M2)
{
int i,j;
float **M3;
M3= (float**)malloc(M*sizeof(float*));
for(i=0;i<M; i++)
 {
 M3[i] = (float*)malloc(N*sizeof(float));
 for(j=0; j<N; j++)
  M3[i][j] = M1[i][j]-M2[i][j];
 }
return M3;
}

void main ()
{float **M1, **M2, **M3;
int i,j,n=3;
float num_j,max;
M1 = Form_Matrix(n,n);
Print_Matrix(n,n,M1);
M2 = Form_Matrix(n,n);
Print_Matrix(n,n,M2);
  for (i=0; i<n; i++)
      for (j=0; j<n; j++)
      {
	if (num_j=Sum_Matrix(M1,n)!=n) M1[i][j]=M1[i][j]*(-(max=Max_Matrix));
      }
  if (Kol(n,n,M1)>Kol(n,n,M2)) M3=Form_M3(n,n,M1,M2);
  printf("matriza M3\n");
  Print_Matrix(n,n,M3);
  getch();}
Но я не очень уверена в правильности хода решения.
Очень надеюсь на вашу помощь))

Добавлено через 14 часов 44 минуты 27 секунд
И как всегда на более сложную программу никто даже не попробывал что-то посоветовать. Вот, если бы какая-нибудь линейная программка, то все такие умные и добрые, все спешат помочь...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2009, 13:32     динамический массив (помогите разобраться с условием и решением программы)
Посмотрите здесь:

Одномерный динамический массив. Хочу разобраться (понять) код программы - C++
Вот такая вот задача: Написать прог-му которая для вещественного массива из (n) элементов определяет сумму элементов расположенный...

Помогите разобраться в работе программы - C++
Ребят,спасите пожалуйста, не могу сообразить, есть код #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;string&quot; #include &quot;stdio.h&quot;...

Помогите разобраться в работе программы - C++
Помогите понять код... #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; //подключают стандартные библиотеки using...

Помогите реализовать динамический массив - C++
помогите с задачей по с++ 1. Реализуйте динамический массив, используя пометку элементов.

Помогите разобраться в коде программы для переворачивания списка (код маленький) - C++
Программа которая переворачивает список L, изменяет ссылки в этом списке так, чтобы его элементы оказались расположенными в обратном...

Вынести из программы функцию(динамический массив) - C++
Код рабочий.Не могу вынести правильно из кода функцию транспортировки матрицы.Задание: Напишите функцию транспонирования матрицы с...

Хочу разобраться с решением через тип данных структура - C++
В таблице из 5 строк хранятся данные о товарах: наименование, цена, количество. Определить и вывести наименование товара, цена которого...

Динамический массив. Ошибка при выполнении программы - C++
Программа должна предоставить заполнение массива пользователю, а дальше вывести массив на экран. (Массив динамический) При компиляции...

помогите с решением - C++
написать программу составления пятиугольника с вершинами вершинами (100,100), (150,100), (170,120), (150,140), (100,100). Закрасить поле с...

помогите с решением задания по С++ - C++
узнать у как функцию х за формулой У=16.7х + 9.2х^2 – 1.01x^3 для х ызменимого от 1.0 к 9.9 с шагом 0.1. входящие данные: диапазон...

Динамический массив в С++: как поменять длину массива по ходу выполнения программы? - C++
Есть такая проблема: есть файл, в котором построчно записаны числа float (1 число - 1 строка). Количество чисел неизвестно. Как...

Помогите с решением задачки на препроцессоры. С++ - C++
Условие:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru