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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2010, 21:59   #1
sherbat
 
Регистрация: 18.12.2009
Сообщений: 4
Стрелка Нужно исправить листинг (пару ошибок), у самого никак не получается(

Тут листинг по Заданию: Дана матрица А(5,5)
1. Найти новый одномерный массив С из сумм элементов каждого столбца матрицы А
2. Найти максимальный элемент, среди элементов главной диагонали матрицы А
3. Заменить третий элемент в первой строке матрицы А на максимальный элемент



Листинг:

#include<iostream>
//#include<math.h>
//#include<fstream.h>
using namespace std;
int main()
{
double max;
int imax, jmax;
double B[5];
double a[5][5]={{5.6,3.4,7.1,6.5,4.6},{4.3,4.8,5. 2,5.8,6.4},{3.9,6.7,5.3,5.8,8.1}, {7.2,6.8,8.9,5.4,4.9},{4.3,4.8,5.2, 5.8,3.3}};

//cout << ”Enter a[“ << i << j << ”]” << endl;
//cin >> a[i][j];

/* for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
{
cout<<"Enter a["<<i<<j<<"]\n";
cin>>a[i][j];
cout<<a[i][j]<<"\t";
cout<<endl;
}
*/
double sum=0;
for(int i=0;i<5;i++)
{
sum=0;
for(int j=0;j<5;j++)
{
sum+=a[i][j];
B[j]=sum;
}
}
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
{
if ((i==j)&&(a[i][j]>max)) {max=a[i][j];imax=i;jmax=j;}
}
cout<<"max="<<max<<endl;
a[0][2]=a[0][2]+a[imax][jmax];
a[imax][jmax]=a[0][2]-a[imax][jmax];
a[0][2]=a[0][2]-a[imax][jmax];
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
return 0;
}
sherbat вне форума Ответить с цитированием
Старый 25.01.2010, 22:59   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от sherbat Посмотреть сообщение
/* for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
{
cout<<"Enter a["<<i<<j<<"]\n";
cin>>a[i][j];
cout<<a[i][j]<<"\t";
cout<<endl;
}
*/
Когда комментарий уберётся, у Вас массив в столбик выведется. cout<<endl; во внутреннем цикле стоит.

Цитата:
Сообщение от sherbat
double sum=0;
for(int i=0;i<5;i++)
{
sum=0;
for(int j=0;j<5;j++)
{
sum+=a[i][j];
B[j]=sum;
}
}
Вы, в отличие от того, что написано в условии, суммы строк вычисляете. И, впридачу, записываете в эл-т массива B с запредельным индексом.

Цитата:
Сообщение от sherbat
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
{
if ((i==j)&&(a[i][j]>max)) {max=a[i][j];imax=i;jmax=j;}
}
Проще, без паразитной проверки i==j не получилось?...
Код:
..
max = a[0][0];
for (int i = 1; i < 5; i++) {
   if  ( a[i][i]>max) ) {
      max = a[i][i]; 
      imax = i;
   }
}
...
Цитата:
Сообщение от sherbat
a[0][2]=a[0][2]+a[imax][jmax];
a[imax][jmax]=a[0][2]-a[imax][jmax];
a[0][2]=a[0][2]-a[imax][jmax];
Этого просто не понял.
Vago вне форума Ответить с цитированием
Старый 25.01.2010, 23:25   #3
sherbat
 
Регистрация: 18.12.2009
Сообщений: 4
По умолчанию

Не могли бы исправить код в "общем виде", просто я не очень хорошо понимаю в программировании, и на большее у меня ума не хватает...=( В компиляторе пишет 2 ошибки... Поправьте как нибудь чтобы заработала эта прога.Пожалуйста.
sherbat вне форума Ответить с цитированием
Старый 26.01.2010, 05:54   #4
BleStaR
Форумчанин
 
Регистрация: 25.09.2009
Сообщений: 234
По умолчанию

Вот твоя задача:
Код:
#include <vcl.h>
#include<stdio.h>
#pragma hdrstop

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

#pragma argsused
int main(int argc, char* argv[])
{
double max, c[5];
int imax=0;
double a[5][5]={
        {5.6,3.4,7.1,6.5,4.6},
        {4.3,4.8,5.2,5.8,6.4},
        {3.9,6.7,5.3,5.8,8.1},
        {7.2,6.8,8.9,5.4,4.9},
        {4.3,4.8,5.2, 5.8,3.3}
        };

printf("Dannia matrica:\n");
for(int i=0; i<5; i++){
        for(int j=0; j<5; j++)
                printf("%5.2f", a[i][j]);
        printf("\n");
}
//Задние 1
for(int i=0; i<5; i++){
        double sum=0.0;
        for(int j=0; j<5; j++)
            sum+=a[j][i];
        c[i]=sum;
}
printf("Massiv symm:\n");
for(int i=0; i<5; i++)
    printf("%7.2f", c[i]);
printf("\n");
//Задание 2
max = a[0][0];
for (int i = 1; i < 5; i++)
   if (a[i][i]>max){
      max = a[i][i];
      imax = i;
   }
printf("Maximalnii element glavnoi diagonali a[%d][%d] = %5.2f\n", imax, imax, max);
//Задние 3 (максимальный элемент главной диагонали)
//a[0][2]=max;
//Задание 3 (Максимальный элемент матрицы)
max=a[0][0];
for(int i=0; i<5; i++)
        for(int j=0; j<5; j++)
                if(a[i][j]>max)max=a[i][j];
a[0][2]=max;

printf("Izmenenia matrica:\n");
for(int i=0; i<5; i++){
        for(int j=0; j<5; j++)
                printf("%5.2f", a[i][j]);
        printf("\n");
}

char end;
scanf("%c", &end);
return 0;
}
Задача у тебя примитивная. Если есть желание лучше программировать хотя бы в области простых задач - порешай задания своих одногруппников (я так понимаю ты студент) для набора опыта.
BleStaR вне форума Ответить с цитированием
Старый 27.01.2010, 17:59   #5
sherbat
 
Регистрация: 18.12.2009
Сообщений: 4
По умолчанию

Ага, Спасибо большое!=)
sherbat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на Delphi, массивы. никак не получается! Saka Помощь студентам 11 21.12.2009 02:04
у меня никак не получается скомпелировать фаил finero Общие вопросы C/C++ 4 10.07.2008 19:29