Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Действия над прямоугольной матрицей 
:(
    Опции темы
Winterlord
Дата 12.12.2008, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 5.10.2008

Репутация: нет
Всего: нет



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

По идее должен быть входной файл, в котором мы сможем вводить любую прямоугольную матрицу, и выходной файл,  в который собственно и будет записан результат. Программа должна быть разбита на функции, ну это я наверно смогу сделать сам. Натолкните плз на правильный путь. 
Заранее Благодарен;)
PM MAIL ICQ   Вверх
Winterlord
Дата 12.12.2008, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 5.10.2008

Репутация: нет
Всего: нет



Неужели никто не хочет натолкнуть на правильное решение:(
PM MAIL ICQ   Вверх
Remiznik
Дата 14.12.2008, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 30.4.2005

Репутация: 1
Всего: 1



Цитата(Winterlord @ 12.12.2008,  00:47)
 Выполнить над B действия: Найти суммы элементов строк и столбцов, на пересечении которых лежат отрицательные элементы.

а можно по подробнее задание что значит на пересечение ?  можно пример как выглядит исходная матрица которую надо обсчитать ? 
PM MAIL   Вверх
Winterlord
Дата 14.12.2008, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 5.10.2008

Репутация: нет
Всего: нет



Ну допустим в файле у нас есть такая вот матрица (в файл мы можем записать любую матрицу):
1  2  3  4  5  6  7
7  6  5  4  3  2  1
1  5  2 -6  2  4  8
2 -3  1  8  8  2  3

Видим, что  во втором столбце, в последней строке стоит -3 - отрицательный элемент, считаем сумму элементов во втором столбце + сумму элементов последней строчки.
Аналогично поступаем и с -6, который располагается в 4-м столбце.
Думаю так

Это сообщение отредактировал(а) Winterlord - 14.12.2008, 00:47
PM MAIL ICQ   Вверх
Dmi3ev
Дата 14.12.2008, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Вот так. Подойдет???
Код

//---------------------------------------------------------------------------

#include <iostream.h>

//---------------------------------------------------------------------------
void mycout (int v[][5], int x, int y)
{
int sumcol=0;
int sumrow=0;
for (int i=0; i<5; i++)
 {
  sumrow+=v[x][i];
  sumcol+=v[i][y];
 }
cout<<"Summ row "<<x<<": "<<sumrow<<"; Summ coloumn "<<y<<": "<<sumcol<<endl;
}

int main()
{
int m[5][5]={{1,2,3,4,-5},
             {-2,3,5,4,2},
             {9,8,7,8,-1},
             {7,8,1,6,-1},
             {2,2,1,6,7}};

for (int i=0; i<5; i++)
 for (int j=0; j<5; j++)
  if (m[i][j]<0)
   mycout (m , i, j);
        return 0;
}
//---------------------------------------------------------------------------



--------------------

PM MAIL   Вверх
Winterlord
Дата 14.12.2008, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 5.10.2008

Репутация: нет
Всего: нет



Dmi3ev, К сожалению матрица должна читаться с файла и результат тоже должен выводиться в файл (ещё одна функция). И сделай пожалуйста так, чтобы при выводе результата выводились номера столбцов и строчек матрицы, ато сейчас, как я понимаю, выводится просто нумерация. Заранее огромное спасибо!
PM MAIL ICQ   Вверх
Dmi3ev
Дата 14.12.2008, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

И сделай пожалуйста так, чтобы при выводе результата выводились номера столбцов и строчек матрицы, ато сейчас, как я понимаю, выводится просто нумерация. Заранее огромное спасибо!

сейчас выводятся номера столбцов и строк, если нужно, чтобы выводился порядковые номера то:
Код

cout<<"Summ row "<<x+1<<": "<<sumrow<<"; Summ coloumn "<<y+1<<": "<<sumcol<<endl;

Цитата

К сожалению матрица должна читаться с файла и результат тоже должен выводиться в файл (ещё одна функция). И сделай пожалуйста так

а сам писать собираешься??? хоть чуть-чуть???


--------------------

PM MAIL   Вверх
Winterlord
Дата 14.12.2008, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 5.10.2008

Репутация: нет
Всего: нет



Цитата(Dmi3ev @ 14.12.2008,  01:22)
а сам писать собираешься??? хоть чуть-чуть???

Если бы у меня хоть что то работало в этой программке, то непременно выложил бы)
К сожалению у меня пока нет хоть сколько то работоспособного варианта, вот и обращаюсь за помощью

PM MAIL ICQ   Вверх
Winterlord
Дата 14.12.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 5.10.2008

Репутация: нет
Всего: нет



Пока вот то, что наработал. Саму функцию подсчёта впихнуть не удаётся, да и с файла читается почему то как одномерный массив. Вывод в файл пока не делал, ибо не работают сами подсчёты.
Код

#include <iostream.h>
#include <fstream.h>

int READ (int *a, int *M, int *N)

{int i=0;
ifstream inFile;
inFile.open("matrix.txt", ios::in);

if (inFile) {while (!inFile.eof())
    {
      inFile>>*(a+i);
    cout<<*(a+i)<<endl;
    i++;}}

       

    inFile.close();}

void mycout (int *a, int M, int N)
{
int sumcol=0;
int sumrow=0;
int x, y;
for (int i=0; i<5; i++)
 {
  sumrow+=a[x][i];
  sumcol+=a[i][y];
 }
cout<<"Summ row "<<x<<": "<<sumrow<<"; Summ coloumn "<<y<<": "<<sumcol<<endl;
}

int main()
{
int M=5, N=5;
    int a[M][N];


    READ (&a[0][0], &M, &N);
        mycout (&a, N, M);

} 

PM MAIL ICQ   Вверх
Remiznik
Дата 14.12.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 30.4.2005

Репутация: 1
Всего: 1



во первых форматируй код !!! и самому понятнее будет и другим легче будет тебе помочь !
Код

#include <iostream.h>
#include <fstream.h>
int READ (int *a, int *M, int *N)
{
     int i=0;
     ifstream inFile;
     inFile.open("matrix.txt", ios::in);
     if (inFile)
     {
            while (!inFile.eof())
            {
                   inFile>>*(a+i);
                   cout<<*(a+i)<<endl;
                   i++;
            }
     }
     inFile.close();
}

void mycout (int *a, int M, int N)
{
      int sumcol=0;
      int sumrow=0;
      int x, y;
      for (int i=0; i<5; i++)
      {
            sumrow+=a[x][i];
            sumcol+=a[i][y];
       }
       cout<<"Summ row "<<x<<": "<<sumrow<<"; Summ coloumn "<<y<<": "<<sumcol<<endl;
}

int main()
{
      int M=5, N=5;
      int a[M][N];
      READ (&a[0][0], &M, &N);
      mycout (&a, N, M);
} 

это твой же код только форматированый ... каждый делает это посвоемому но в любое форматирование удобнее читать чем кучу операторов )

второе я не понимаю зачем ты передаёш значения M и N в функции если они там не используются .... я догодываюсь что они должны там использоватся только вот твой код этого не делает ! подумай над этим !

Это сообщение отредактировал(а) Remiznik - 14.12.2008, 17:31
PM MAIL   Вверх
2008сергей2008
Дата 17.12.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 17.12.2008

Репутация: нет
Всего: нет



люди помогите с задачей надо найти номер столбца в котором количество отрицательных элементов равна количеству положительных (нулевые не считаются)если таких нет то вывести ноль.


#include<iostream.h>
 #include<conio.h>
 void main();
 {
 int**a,m,n;
 cout<<"vvedite razmer:";cin>>m>>n;
 a=new int*[m];
 for(int i=0;i<m:i++)
 a[i]=new int[n];
 randomize();
 for(i=0;i<m;i++)
 {cout<<"\n";
 for (int j=0;j<n;j++)
 {
 a[i][j]=random(10)-5;
 cout <<a[i][j]<<"\t";
 }}
 cout<<"\n\n rez:\n";
 for(i=0;i<n;i++)




 for(i=0;i<m;i++)
 delete []a[i];
 delete[]a
 getch();
 }
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.