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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2012, 19:30   #1
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию Двумерный массив в С

В С в двумерном массиве найти минимальный элемент среди лежащих выше главной диагонали.
Вот пример:
В целочисленном двухмерном динамическом массиве (матрице) размером NМ найти сумму четных элементов и их количество. Ввод исходных данных (размеры массива и его элементы) и вывод результатов выполнить в основной функции. Решение поставленной задачи оформить в фунции пользователя.
Текст программы может иметь следующий вид:
Код:
#include <iostream.h>
#include <conio.h>

int Fun_Sum_Kol(int, int, int**, int*);    	// Описание прототипа функции

void main()
{
		int **a, i, j, n, m, sum, kol;
cout << "\t Input N, M : ";
cin >> n >> m;
a = new int*[n]; 					// Захват памяти под указатели
for(i=0; i<n;i++)
                a[i] = new int[m]; 		// Захват памяти под элементы
cout <<"\n Input A" << endl;
for(i=0; i<n; i++)
                for(j=0; j<m; j++){
                        cout << "\t a[" << i+1 << "][" << j+1 << "] = ";
                        cin >> a[i][j];
                }
cout <<"\n Matrix A:" << endl;
for(i=0; i<n; i++) {
                for(j=0; j<m; j++)
                        cout << "\t" << a[i][j];
                cout << endl;
}

// Обращение к функции с указанием фактических аргументов
sum = Fun_Sum_Kol(n, m, a, &kol);		
cout << "\n Kol-vo = " << kol << "\t Summa = " << sum << endl;
      	delete []a; 						// Освобождение памяти      	
cout << "\n\t Delete !" << endl;
cout << " Press any key ... " << endl;
getch();
}
/* Реализация описанной выше функции, в заголовке которой указаны формальные параметры, идентификаторы которых обрабатываются в ее коде */
int Fun_Sum_Kol(int a, int b, int **x, int *k)
{
int i, j, s = 0;
*k = 0;
for(i=0; i<a;i++)
         for(j=0; j<b;j++)
                  if(x[i][j] % 2 ==0){
                                (*k)++;			 // Скобки обязательны
                                s += x[i][j];
                  }
return s;
}
При вводе значений элементов массивов в одной строке через пробелы должен получиться следующий результат:

Помогите пожалуйста
the_faceless вне форума Ответить с цитированием
Старый 08.12.2012, 19:47   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

И чем помочь? Откомпилировать или перекрасить окно в белый цвет надо?
Изображения
Тип файла: jpg 111.jpg (52.1 Кб, 53 просмотров)
eoln вне форума Ответить с цитированием
Старый 08.12.2012, 19:55   #3
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

Вы не поняли видимо, это все я написал в качестве примера выполнения задания, в котором находится сумма четных элементов и их количество, а мне необходимо найти минимальный элемент среди лежащих выше главной диагонали
the_faceless вне форума Ответить с цитированием
Старый 08.12.2012, 20:19   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Каюсь, не увидел.
Примерно так будет
Код:
int Fun_Min(int a, int **x)
{
int i, j = 0;
int min = x[0][1];
for(i=0; i<a;i++)
         for(j=i+1; j<a;j++)
                  if(x[i][j] < min) min=x[i][j];
return min;
}
Матрица должна быть квадратной порядка а
Вызывать
Код:
int min = Fun_Min(n, a);
Ну и естественно другие ф-ии из кода надо выкинуть, ибо не нужны
eoln вне форума Ответить с цитированием
Старый 09.12.2012, 17:02   #5
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

Что то не могу разобраться, ошибки мне выдает различные. Нашел тут как это сделать для рандомных чисел:

Код:
#include <iostream>
#include <iomanip>
#include <ctime>
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int row,column;
std::cout << "Введите кол-во строк в массиве: ";
std::cin >> row;
std::cout << "Введите кол-во столбцов в массиве: ";
std::cin >> column;
    int **MAS = new int *[row]; // выделяем память динамически.
    for (int i = 0; i < row; i++)
    MAS[i] = new int [column];
srand(time(NULL));
std::cout << "Первоначальный массив: " << std::endl;
    for (int i=0; i<row; i++) // заполняем массив случайными числами,
    {                           // и выводим на экран.
        for (int j=0; j<column; j++)
        {
            MAS[i][j]=rand() % 20;
            std::cout << std::setw(3) << MAS[i][j];
        }
        std::cout << std::endl;
    }
 
    int min=MAS[0][1]; // присваиваем значение одной из ячеек, выше главной диагонали.
    for (int i=0; i<row; i++) // ищем наименьший элемент.
        for (int j=0; j<column; j++)
            if ((j>i) && (MAS[i][j]<min)) min=MAS[i][j];
 
std::cout << "Наименьший элемент, лежащий выше главной диагонали: " << min;
std::cout << std::endl;
    for (int i = 0; i < row; i++)
    delete []MAS[i];
    delete []MAS;
    system("pause");
    return 0;
}
так вот как это можно преобразовать чтобы числа и размер массива вводил я?
the_faceless вне форума Ответить с цитированием
Старый 10.12.2012, 22:54   #6
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

ребята, помогите
the_faceless вне форума Ответить с цитированием
Старый 16.12.2012, 17:05   #7
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

народ, выручайте не шарящего)
the_faceless вне форума Ответить с цитированием
Старый 16.12.2012, 19:00   #8
Stasiksis
Пользователь
 
Регистрация: 12.09.2011
Сообщений: 19
По умолчанию

Код:
#include <iostream>
#include <iomanip>
#include <ctime>
 
int main()
{   
    int row,column;
    std::cout << "Введите размер матрицы\n";
    std::cin >> row;
    
    int **MAS = new int *[row]; // выделяем память динамически.
    for (int i = 0; i < row; i++)
        MAS[i] = new int [row];
    std::cout << "Введите элементы матрицы\n";
    for (int i=0; i<row; i++) 
    {                           
        for (int j=0; j < row; j++)
        {
            std::cin >> MAS[i][j];
        }
    }
 
    int min=MAS[0][1]; // присваиваем значение одной из ячеек, выше главной диагонали.
    for (int i=0; i<row; i++) // ищем наименьший элемент.
        for (int j=0; j < row; j++)
            if ((j>i) && (MAS[i][j] < min)) min=MAS[i][j];
 
    std::cout << "Наименьший элемент, лежащий выше главной диагонали: " << min << "\n";
    for (int i = 0; i < row; i++)
        delete []MAS[i];
    delete []MAS;
    
    return 0;
}
Stasiksis вне форума Ответить с цитированием
Старый 18.12.2012, 23:21   #9
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

Лучи добра вам и огромнейшее спасибо!
the_faceless вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двумерный массив таня иванова Помощь студентам 10 20.11.2011 16:35
Двумерный массив Акоб Общие вопросы C/C++ 4 02.08.2011 13:41
двумерный массив Fufichek Помощь студентам 11 12.07.2011 08:30
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40