IPB

Здравейте ( Вход | Регистрация )

> Курсова Работа С++, Някой ако може да помогне
Vanko™
коментар May 14 2010, 09:09
Коментар #1


Нов Потребител

Група: Потребители
Коментари: 8
Регнат: 2-January 07
От: Plovdiv
Пол: Мъж



Някой ако може да ми помогне с направата на задачата ще съм много благодарен,тъй като нищо не разбирам,а без нея съм пътник.надявам се,че за някой който разбира няма да е проблем smile.gif

Даден е двумерен масив А[N,M] кадето N,M са цели числа в интервала [2,6] и се въвеждата от клавиатурата.Да се състави програма,която въвежда стойностите на елементите на масива и реализира следното:
1.Намира средноаретметичната стойност от положителните елементи на масива
2.Формира нов масив B,който има за елементи сумите по редовете от елементите на масив A
3.Извежда на екрана промененния масив в табличен вид
Go to the top of the page
 
+Quote Post
 
Start new topic
Отговори (1 - 5)
FrAgMaKeR
коментар May 14 2010, 14:15
Коментар #2


Lucid Dreamer

Група: Администратори
Коментари: 6,714
Регнат: 25-April 05
Пол: Мъж



Какво точно те затруднява в задачата, какво не ти е ясно как става? И разбира се покажи какво си написал до момента.
Go to the top of the page
 
+Quote Post
Vanko™
коментар May 14 2010, 18:22
Коментар #3


Нов Потребител

Група: Потребители
Коментари: 8
Регнат: 2-January 07
От: Plovdiv
Пол: Мъж



Код
#include <iostream>
using namespace std;
int main () {
    int N,M,br=0;
    double sum=0,red=0;
    cout <<"Vuvedete N: ";
    cin >>N;
    cout <<"Vuvedete M: ";
    cin >>M;
    if ((N>6)||(N<2)||(M>6)||(M<2)) {
                                    cout <<"ERROR\n";
                                    system ("pause");
                                    return 1;
                                    }
    double A[N][M],B[N];
    for (int i=0;i<N;i++) {
        for (int j=0;j<M;j++) {
            cout <<"A["<<i<<"]["<<j<<"]= ";
            cin >>A[i][j];
        }
    }
    for (int i=0;i<N;i++) {
        for (int j=0;j<M;j++) {
            if (A[i][j]>0) {
                           sum+=A[i][j];
                           br++;
            }
        }
    }
    double sr;
    if (br==0) cout <<"Nqma polojitelni 4isla\n";
    sr=sum/br;
    cout <<"Sredno aritmeti4no ot polojitelnite: "<<sr<<endl;
    for (int i=0;i<N;i++) {
        for (int j=0;j<M;j++) {
            red+=A[i][j];
        }
        B[i]=red;
        red=0;
    }
    cout <<"\nMasivut B[]: "<<endl;
    for (int i=0;i<N;i++) cout <<B[i]<<" ";
    cout <<endl;
    system ("pause");
    return 0;
}


това е с чужда помощ но на Borland C++ ми дава грешки и не тругва ?
Go to the top of the page
 
+Quote Post
akolevutd
коментар May 15 2010, 12:56
Коментар #4



Група: Глобален Модер
Коментари: 1,071
Регнат: 24-June 06



И грешките са?
Go to the top of the page
 
+Quote Post
FrAgMaKeR
коментар May 15 2010, 14:08
Коментар #5


Lucid Dreamer

Група: Администратори
Коментари: 6,714
Регнат: 25-April 05
Пол: Мъж



Като цяло логиката е добра, разбира се за оптимизации има доста място, но като цяло решението бива. Проблема е че динамични масиви не се декларират така, това предизвиква грешка при компилиране. Задай масивите A и B с някакъв фиксиран размер по-голям от границата на N и M например числото 7 за да може да тръгне, пък вече си ги запълвай до колкото трябва. Ако искаш да ползваш динамични масиви вече се ползват malloc и free и тн, но като гледам нивото на задачата, едва ли се очаква такова нещо.

system("pause"); се пише без разстояние и попринцип го избягвай, не работи на всеки компилатор.

Един съвет, подобри си стила на писане, изолзвай повече коментари, бели полета и си оформяй малко по-прегледно блоковете, за да може да се чете малко по-добре.

Ето едно примерно решение от мен, без динамични масиви и функции, базирано на твоя сорс:

CODE
#include <iostream>
using namespace std;

int main()
{
    const int ASIZE = 7; // Fixed array size

    int N=0, M=0, counter=0;

    double sum=0, row=0, average=0;


    // Controlled input for N with loop and a half.
    while (true)
    {
        cout << "N (6>N>2) = ";
        cin >> N;
        if (N<6 && N>2) { break; } else { cout << "Invalid input, try again!\n"; }
    }

    // Controlled input for M with loop and a half.
    while (true)
    {
        cout << "M (6>N>2) = ";
        cin >> M;
        if (M<6 && M>2) { break; } else { cout << "Invalid input, try again!\n"; }
    }


    double A[ASIZE][ASIZE]; // Array A[][] with fixed size.

    cout << "\n\nFill array A[][]:\n\n";

    // Initializing array A[][] and calculating the sum of positive elements.
    for (int i=0; i<N; i++) {
        for (int j=0; j<M; j++)
        {
            cout << "A[" << i << "][" << j << "]= ";
            cin >>A[i][j];

            if (A[i][j]>0)
            {
                sum+=A[i][j];
                counter++;
            }
        }
    }

    // Print average of positive elements.
    if (counter > 0)
    {
        average=sum/counter;
        cout << "\n\nAverage = " << average;
    } else {
        cout << "\n\nWithout positive numbers.";
    }

    double B[ASIZE]; // Array B[] with fixed size.
    
    // Filling array B[] with sum of rows of A[][]
    for (int i=0;i<N;i++){
        for (int j=0; j<M; j++){
            row += A[i][j];
        }
        B[i]=row;
        row=0;
    }

    // Printing B[] in tab format.
    cout << "\n\nArray B[]: \n\n";

    for (int i=0;i<N;i++){
        cout << B[i] << "\t";
    }
    
    cout << endl;
    system("pause");
    return 0;
}
Go to the top of the page
 
+Quote Post
akolevutd
коментар May 15 2010, 14:44
Коментар #6



Група: Глобален Модер
Коментари: 1,071
Регнат: 24-June 06



Не знам на каква версия борланд пишеш, моя е старичък мисля, но нещо такова трябва да е:
Код
#include <iostream.h>
#include <stdio.h>

int main ( ) {

    int N, M, y, i, red, br = 0, el = 0;
    cin>>N; cin>>M;
    if ( N < 2 || N > 6 ) return 1;
    if ( M < 2 || M > 6 ) return 1;
    int **A = new int*[N]; int B[1];

    for(i = 0; i < N; ++i) {
        red = 0; A[i] = new int[M];
        for(y = 0; y < M; ++y) { cin>>A[i][y];
            if ( A[i][y] > 0 ) {
                ++el; br = br + A[i][y];
            } red = A[i][y] + red;
        } B[i] = red;
    }

    cout<<"\n\nSredno aretmeti4no\n"<<br/el;
    cout << "\nMasiv B:\n";
    for(i = 0; i < N; ++i) cout<<B[i]<<" ";

    return 1;

}

има още да се пише, направи нужните проверки и прочие.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 потребител(и) четат тази тема (1 гости и 0 скрити)
0 Потребител(и):

 



- Елате в .: BGtop.net :. Топ класацията на българските сайтове и гласувайте за този сайт!!! Олекотена версия

Сега е: 21st October 2018 - 13:27