Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Помогите доделать прогу


Автор: NEWLOGIN3 25.5.2008, 17:29
  

Найти сумму элементов строк с отрицательными элементами на главной диагонали. квадратной матрици порядка n.

#include <stdio.h>
#include <conio.h>

main ()
{
 int n, j,i;
 int B[10][10];
 int C[10];

 void input(int a,int matr[10][10]);
 int sum (int a, int matr[10][10]);

 clrscr();
 printf ("“Введите порядок матрцы\n");
 scanf ("%d",&n);
 input (n,B);
 for (i=0; i<n; i++)
 { for(j=0;j<n;j++)
     if(i==j)
     if(B[i][j]<0)
    C[j]=sum(n,B);
    printf("сумма елементов %d строки ровна : %d\n",j+1,C[j]);
 }
}

 int sum(int a, int matr[10][10])
 {
 int i,j,k=0;

    for (j=0;j<a;j++)
      k+=matr[i][j]  ;

    return k;
 }

 void input(int a,int matr[10][10])
 {int i,j;
     for (i=0; i<n; i++)
    for (j=0; j<n; j++)
       scanf ("%d",&matr[i][j]);
 }

Автор: rrrFer 25.5.2008, 18:51
Бред какой то, напиши по-русски?

Автор: bronislav 25.5.2008, 18:59
Примерно так?

Код

#include <stdio.h>
#include <malloc.h>

int main ()
{
    int size;
    printf("Введите размер матрицы: ");
    scanf("%d",&size);
    int **matrix = (int**)malloc(sizeof(int*)*size);
    for(int i = 0; i < size; i++)
        matrix[i] = (int*)malloc(sizeof(int)*size);
    
    printf("Ввод матрицы:");
    for(int i = 0; i < size; i++)
        for(int j = 0; j < size; j++)
            scanf("%d",&matrix[i][j]);
    
    printf("Суммируем....\n");
    int sum = 0;
    for(int i = 0; i < size; i++)
    {
        if( matrix[i][i] < 0 )
            for(int j = 0; j < size; j++)
                sum += matrix[i][j];
    }
    printf("Результат: %d\n",sum);
}


Автор: rrrFer 25.5.2008, 19:07
если я правильно понял украинский то так:
Код

#include <stdio.h>
#include <stdlib.h>
main (){
    int n,j,i,**B,s;
    printf ("n = \n");
    scanf ("%d",&n);
    B=new int*[n];
    for(i=0;i<n;i++){
        B[i]=new int[n];
        for(j=0;j<n;j++)
            scanf("%d",&B[i][j]);
    }
    for(i=0;i<n;i++){
        if(B[i][i]<=0){
            for(j=0,s=0;j<n;j++)
                s+=B[i][j];
            printf("S[ %d ]= %d\n",i+1,s);
        }
    }system("pause");
}

bronislav
не заметил, что вы уже ответили smile

Автор: bronislav 25.5.2008, 19:09
rrrFer, Ну раз уж использовать C, то насерно malloc юзать надо. Хотя в услови этого не было, то хз.

А вообще я раньше успел  smile 

Автор: Mephisto 25.5.2008, 19:14
Код

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class Loader{
public:
    explicit Loader():row(0){}
    void operator()(vector<int>& AVal){
        cout<<"Row:"<<row<<endl;
        for_each(AVal.begin(), AVal.end(), Reader());
        ++row;
    }
protected:
    int row;
    struct Reader{
        void operator()(int& Val){cin>>Val;}
    };
};

class summator{
public:
    explicit summator():row(0), Summ(0){}
    void operator()(vector<int>& AVal){
        if(AVal[row]<0)Summ+=AVal[row];
        ++row;
    }
    int Summ;
protected:
    int row;
};

int main(int argc, char** argv){
    int n; //Размер матрицы
    cout<<"Введите размер матрицы:";
    cin>>n;

    vector<vector<int> > vec(n, vector<int>(n));

    summator LS;
    for_each(vec.begin(), vec.end(), Loader());//Вводим значения матрицы
    LS=for_each(vec.begin(), vec.end(), LS);//собственно расчет

    cout<<"Сумма="<<LS.Summ<<endl;

  return 0;
}



Добавлено через 1 минуту и 41 секунду
А я незаметил что вы оба ответили  smile 

Автор: NEWLOGIN3 25.5.2008, 22:18
Спасибо большое ребята за помощь,побольше бы таких как вы, Но не могли бы вы подсказать что именно в моем варианте не так ,может я ошибаюсь,но у меня такое ощущение что в моем примере для полного счасть не хватает какой-то мелочи(скорее всего что-то не так в обьявлении параметров функции) , ваши работы класные, но у меня их не примут т.к. эта работа по теме Функции ,а что касается варианта господина MEPHISTO то мне в жизни не поверят что это я написал т.к. я не совсем шарю что там происходит ,тем более что мы учим именно си а не си++.(кстати,условие переведено на русский ) 

Автор: mes 25.5.2008, 23:08

Цитата(NEWLOGIN3 @  25.5.2008,  22:18 Найти цитируемый пост)
 Но не могли бы вы подсказать что именно в моем варианте не так ,может я ошибаюсь,но у меня такое ощущение что в моем примере для полного счасть не хватает какой-то мелочи


Цитата(NEWLOGIN3 @  25.5.2008,  17:29 Найти цитируемый пост)
int i,j,k=0;

    for (j=0;j<a;j++)
      k+=matr[i][j]  ;


в этом участке всегда считается сумма элементов 0й строки в кол-ве равном а

Цитата(NEWLOGIN3 @  25.5.2008,  17:29 Найти цитируемый пост)
. квадратной матрици порядка n.


некрасиво при таком задании исполэзовать статический  массив:
Цитата(NEWLOGIN3 @  25.5.2008,  17:29 Найти цитируемый пост)
int B[10][10];


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)