Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Помощ

Помощ

Мнениеот Гост » 03 Ное 2018, 10:22

Може ли някой да ми помогне със задачата за С++..Нещо ми забива компютъра, а е спешно.
Задача:
Програма с функция main и избор чрез меню на функции за
Въвеждане от клавиатурата в масив факултетните номера /с проверка за коректност/ на студенти от група /до 25 студента/;
Форматиране на нов масив само от нечетните факултетни номера и определяне на максималния факултетен номер;
Презаписване на входния масив в нов масив и сортиране на този масив във входящ ред;
Извеждане на екрана информация за съответния масив с пояснителен текст. В задачата не е задължително за се използва меню за избор на функции.
Гост
 

Re: Помощ

Мнениеот Добромир Глухаров » 03 Ное 2018, 16:03

Код: Избери целия код
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <algorithm>

using namespace std;

char ch[256];

void Enter(int &N, int FN[])
{
    do
    {
        cout << "\nБрой студенти (1..25): ";
        cin.getline(ch,256);
        N = atoi(ch);
    }
    while(N < 1 || N > 25);
    for(int counter = 0; counter < N; counter++)
    {
        do
        {
            cout << "\nСтудент номер " << 1 + counter << " Факултетен номер (10 000 .. 99 999): ";
            cin.getline(ch,256);
            FN[counter] = atoi(ch);
        }
        while(FN[counter] < 10000 || FN[counter] > 99999);
    }
}

void MaxOdd(int N, int FN[])
{
    int odd[25], mx = 0, M = 0;
    for(int counter = 0; counter < N; counter++)
        if(FN[counter] % 2)
    {
        odd[M] = FN[counter]; M++;
        if(FN[counter] > mx) mx = FN[counter];
    }
    if(M > 0)
    {
        cout << "\nНечетни факултетни номера:" << endl;
        for(int counter = 0; counter < M - 1; counter++)
            cout << odd[counter] << ", ";
        cout << odd[M - 1] << endl << endl;
        cout << "Максимален от тях: " << mx << endl << endl;
    }
}

void FormSorted(int N, int FN[])
{
    int *srtd = new int[N];
    for(int counter = 0; counter < N; counter++)
        srtd[counter] = FN[counter];
    sort(srtd, srtd + N);
    cout << "\nСортиран масив:\n\n";
    for(int counter = 0; counter < N - 1; counter++)
        cout << srtd[counter] << ", ";
    if(N > 0)
        cout << srtd[N - 1];
    cout << endl << endl;
}

int main()
{
    int choose, N, FN[25];
    SetConsoleCP(1251); SetConsoleOutputCP(1251);
    do
    {
        cout << "Работа с факултетни номера" << endl << endl;
        cout << "1) Въвеждане на броя студенти и масив с факултетни номера" << endl;
        cout << "2) Формиране на масив с нечетните номера и определяне на максималния от тях" << endl;
        cout << "3) Формиране на сортиран масив от първоначалния" << endl;
        cout << "4) КРАЙ" << endl;
        do
        {
            cout << "Избери (1..4): ";
            cin.getline(ch,256);
            choose = atoi(ch);
        }
        while(choose < 1 || choose > 4);
        switch(choose)
        {
            case 1:
                Enter(N, FN);
                break;
            case 2:
                MaxOdd(N, FN);
                break;
            case 3:
                FormSorted(N, FN);
                break;
            default:
                break;
        }
    }
    while(choose < 4);
    return 0;
}
Аватар
Добромир Глухаров
Математик
 
Мнения: 2080
Регистриран на: 11 Яну 2010, 13:23
Рейтинг: 2178

Re: Помощ

Мнениеот Добромир Глухаров » 03 Ное 2018, 17:57

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

Код: Избери целия код
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <algorithm>

using namespace std;

char ch[256];

void Enter(int &N, int FN[])
{
    do
    {
        cout << "\nБрой студенти (1..25): ";
        cin.getline(ch,256);
        N = atoi(ch);
    }
    while(N < 1 || N > 25);
    for(int counter = 0; counter < N; counter++)
    {
        do
        {
            cout << "\nСтудент номер " << 1 + counter << " Факултетен номер (10 000 .. 99 999): ";
            cin.getline(ch,256);
            FN[counter] = atoi(ch);
        }
        while(FN[counter] < 10000 || FN[counter] > 99999);
    }
}

void MaxOdd(int N, int FN[])
{
    int odd[25], mx = 0, M = 0;
    for(int counter = 0; counter < N; counter++)
        if(FN[counter] % 2)
    {
        odd[M] = FN[counter]; M++;
        if(FN[counter] > mx) mx = FN[counter];
    }
    if(M > 0)
    {
        cout << "\nНечетни факултетни номера:" << endl;
        for(int counter = 0; counter < M - 1; counter++)
            cout << odd[counter] << ", ";
        cout << odd[M - 1] << endl << endl;
        cout << "Максимален от тях: " << mx << endl << endl;
    }
}

void FormSorted(int N, int FN[])
{
    int *srtd = new int[N];
    for(int counter = 0; counter < N; counter++)
        srtd[counter] = FN[counter];
    sort(srtd, srtd + N);
    cout << "\nСортиран масив:\n\n";
    for(int counter = 0; counter < N - 1; counter++)
        cout << srtd[counter] << ", ";
    if(N > 0)
        cout << srtd[N - 1];
    cout << endl << endl;
    delete srtd;
}

int main()
{
    int choose, N, FN[25];
    SetConsoleCP(1251); SetConsoleOutputCP(1251);
    do
    {
        cout << "Работа с факултетни номера" << endl << endl;
        cout << "1) Въвеждане на броя студенти и масив с факултетни номера" << endl;
        cout << "2) Формиране на масив с нечетните номера и определяне на максималния от тях" << endl;
        cout << "3) Формиране на сортиран масив от първоначалния" << endl;
        cout << "4) КРАЙ" << endl;
        do
        {
            cout << "Избери (1..4): ";
            cin.getline(ch,256);
            choose = atoi(ch);
        }
        while(choose < 1 || choose > 4);
        switch(choose)
        {
            case 1:
                Enter(N, FN);
                break;
            case 2:
                MaxOdd(N, FN);
                break;
            case 3:
                if(N > 0) FormSorted(N, FN);
                break;
            default:
                break;
        }
    }
    while(choose < 4);
    return 0;
}
Аватар
Добромир Глухаров
Математик
 
Мнения: 2080
Регистриран на: 11 Яну 2010, 13:23
Рейтинг: 2178

Re: Помощ

Мнениеот Гост » 04 Ное 2018, 10:31

Много Ви благодаря за помощта. :D
Гост
 


Назад към C, C++



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)
cron