1 Востаннє редагувалося sn7770666k (25.05.2016 13:01:23)

Тема: Допоможіть будь-ласка виправити помилки в коді...с++..)

не знаходить максимальне і мінімальне значення

#include"stdafx.h"
#include <iostream>
#include <cstdlib>
#include<conio.h>
#include <locale.h> 
#define N 10
int main()
{
    using namespace std; 
    setlocale(0,"");    
    int arr[N][N],n, m, a=0, b=0; 
cout<<" \nВвед1ть розм1рнoстi масиву n i m:\n"; 
   cin>>n>>m; 
   cout<<"\n n="<<n<<"  m="<<m;    while (a>=b)   
   {      //перевірка правильності 
     cout<<" \n\n  Введ1ть границ1 1нтервалу a i b:\n";      cin>>a>>b; 
     cout<<"\n a="<<a<<" b="<<b; 
    } 
    printf("\n\n  Початковий  масив:\n"); 
    for (int i=0;i<n;i++)     
    { 
    printf("\n"); 
     for (int j=0;j<m;j++) 
     {      
          arr[i][j]=rand()%(b-a)+a; 
     printf("%7d",arr[i][j]); 
     }
    }

    int pr[N];    
    for(int i = 0; i<n;i++)
    {
        pr[i]=1;
        for(int j = 0;j<m;j++)
        {
            if(arr[i][j]>=0) 
                pr[i]*=arr[i][j];
            else 
            {
                pr[i] = 0;
                break;
            }
        }
    }
    for(int i = 0; i<n;i++) 
        if(pr[i]) std::cout<<"\nДобуток "<<i<<"  рядка= "<<pr[i]<< "  \n" ;
        else std::cout<<"\nВ рядку "<<i<<" присутні в1дємні елементи!\n";
        int i,j,sum,max_sum,min_sum;
for (int k = 0; k < n; k++)
    {
            sum = 0;
        for (i = 0;i<n;i++)
            sum += arr[i][i];
        if ((k == 0) || (sum > max_sum))
            max_sum = sum;
        if((k==0)||(sum <min_sum))
            min_sum=sum;
        sum = 0;
        for (i = k, j = 0; i <n; i++, j++)
            sum += arr[i][j];
        if (sum > max_sum)
            max_sum = sum;
        if(sum<min_sum)
            min_sum=sum;
    }
printf("\ngolovna diagonal\n");
    cout << "Maximalinaia summa: " << max_sum;
            cout << "\nMin summa: " << min_sum;
            printf("\n");
            for (int k = 0; k <n; k++)
    {
            sum = 0,max_sum=0;
                    for (i = 0;i<n;i++)
            sum += arr[n-1-i][i];
        if ((k == n-1-i) || (sum > max_sum))
            max_sum = sum;
        if((k==n-1-i)||(sum <min_sum))
            min_sum=sum;
        sum = 0;
        for (i = k, j = 0; i<n; i++, j++)
            sum += arr[i][j];
        if (sum > max_sum)
            max_sum = sum;
        if(sum<min_sum)
            min_sum=sum;
    }
            printf("\npobichna diagonal\n");
    cout << "Maximalinaia summa: " << max_sum;
            cout << "\nMin summa: " << min_sum;
            _getch();
return 0;                                     
}

2

Re: Допоможіть будь-ласка виправити помилки в коді...с++..)

ви ж просто берете якийсь лівий код, котрий не відноситься до вас і вашої задачі, і постите його в якості своїх напрацювань, з надією, що ми тут подивимось, і подумаємо - "ой, шо за муть? зараза напишу йому вірний код" ?

3

Re: Допоможіть будь-ласка виправити помилки в коді...с++..)

FakiNyan написав:

ви ж просто берете якийсь лівий код, котрий не відноситься до вас і вашої задачі, і постите його в якості своїх напрацювань, з надією, що ми тут подивимось, і подумаємо - "ой, шо за муть? зараза напишу йому вірний код" ?

це я писав..

4

Re: Допоможіть будь-ласка виправити помилки в коді...с++..)

FakiNyan написав:

ви ж просто берете якийсь лівий код, котрий не відноситься до вас і вашої задачі, і постите його в якості своїх напрацювань, з надією, що ми тут подивимось, і подумаємо - "ой, шо за муть? зараза напишу йому вірний код" ?

ось задача"Дана прямокутна цілочисельна матриця.
Визначити добуток елементів в тих рядках, які не містять від'ємних елементів. Підрахувати  максимум і мінімум серед сум елементів діагоналей на головній і побічній діагоналях матриці. " я просто не зрозумів цього "Підрахувати  максимум і мінімум серед сум елементів діагоналей на головній і побічній діагоналях матриці"...

Подякували: koala, leofun012

5

Re: Допоможіть будь-ласка виправити помилки в коді...с++..)

Вибачте, але без завдання воно реально так виглядало.
Що ж до завдання, то воно дійсно дуже криво сформульоване. Я бачу тут три варіанти:
- рахуємо суми елементів на діагоналях (дві - для головної і побічної), кажемо, яка з них більша;
- шукаємо, як можна скомбінувати елементи на діагоналях, щоб отримати максимальну суму, тобто ігноруємо від'ємні елементи, а якщо всі від'ємні - знаходимо максимальний серед них (для максимума, для мінімума - навпаки);
- звертаємося із попередніми варіантами до викладача, щоб пояснив, що саме знайти.

Подякували: sn7770666k, leofun012

6

Re: Допоможіть будь-ласка виправити помилки в коді...с++..)

koala написав:

Вибачте, але без завдання воно реально так виглядало.
Що ж до завдання, то воно дійсно дуже криво сформульоване. Я бачу тут три варіанти:
- рахуємо суми елементів на діагоналях (дві - для головної і побічної), кажемо, яка з них більша;
- шукаємо, як можна скомбінувати елементи на діагоналях, щоб отримати максимальну суму, тобто ігноруємо від'ємні елементи, а якщо всі від'ємні - знаходимо максимальний серед них (для максимума, для мінімума - навпаки);
- звертаємося із попередніми варіантами до викладача, щоб пояснив, що саме знайти.

Дякую.) а можливий такий варіант що знайти максимальне серед сум діагоналей паралельних головній і побічній.?

7

Re: Допоможіть будь-ласка виправити помилки в коді...с++..)

Це буде суперечити умові (там немає слова "паралельних"), але хто зна...

8

Re: Допоможіть будь-ласка виправити помилки в коді...с++..)

koala написав:

Це буде суперечити умові (там немає слова "паралельних"), але хто зна...

ясно.) дякую ще раз.)