Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
16 / 15 / 1
Регистрация: 05.04.2011
Сообщений: 426
1

У меня сейчас экзамен кто как может hel_p программа на массивы.

25.01.2012, 09:07. Показов 1194. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу заполнения одномерного массива случайными числами из заданного диапазона. Из полученного массива все четные положительные числа занести во второй массив, а все не четные отрицательные в третий. В каждом из полученных массивов подсчитать количество инверсий. Определить во втором массиве количество элементов являющихся степенью 5. Второй и Третий массивы каждый записать в отдельный файл.

Часть программы я сделаю сам но у меня затруднение на счет инверсии и ещеб мне хатяб 1 метод сортировки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2012, 09:07
Ответы с готовыми решениями:

8 января у меня экзамен по паскалю.Может ли кто-нибудь помочь?
Ребят,завтра, 8 января у меня экзамен по паскалю. Я боюсь получить билет с нелегкой (для меня...

Кто сейчас может протестить сайт с MacBook'а или с iMac'a из Safari?
Кто сейчас может протестить сайт с MacBook'а или с iMac'a из Safari?

может кто то знает где у меня ошибка ....
каждое слово текста напечатать в обратном порядке Добавлено через 30 секунд Uses Crt; Type...

У меня есть код , кто может объяснить?
Всем доброго времени суток! У меня есть код можете его проверить ? и объяснить каждую строку ...

14
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
25.01.2012, 09:24 2
Цитата Сообщение от stels009 Посмотреть сообщение
В каждом из полученных массивов подсчитать количество инверсий
Не понял, о чём речь. Лучше уточните у преподавателя (или подождём кого-нибудь более проницательного).

Цитата Сообщение от stels009 Посмотреть сообщение
метод сортировки
Вот пузырьковая:
C++
1
2
3
4
5
6
7
8
template<typename T>
void bubble_sort(T *arr, size_t size)
{
    for (size_t i = 0; i < size; ++i)
        for (size_t j = 1; j < size - i; ++j)
            if (arr[j - 1] > arr[j])
                std::swap(arr[j - 1], arr[j]);
}
0
16 / 15 / 1
Регистрация: 05.04.2011
Сообщений: 426
25.01.2012, 09:39  [ТС] 3
Я так понимаю что инверсию надо подсчитать во 2 и 3 массиве.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
25.01.2012, 09:41 4
stels009, это сложно не понять. Я не понял, что именно надо подсчитать. Только не говорите "количество инверсий".
0
16 / 15 / 1
Регистрация: 05.04.2011
Сообщений: 426
25.01.2012, 10:46  [ТС] 5
Вообщем вот шаблон по катором я сейчас делаю вообщем сейчас надо отсортировать на четность и не четность вроде просто ноя чета застрял место указал стрелками.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include<iostream>  
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<String.h>
#include<ctype.h>
#include<stdlib.h>
#include<windows.h>
using namespace std;   
 
 
void sort(int* a, int n)
{
    for ( int i = 1; i < n; i++ ) // отсчитываем проходы по массиву
        for ( int j = 0; j < n-i; j++ ) // проходим по массиву
        {   
            int er=0;
            er = a[j] % 2
                if(er = 0)
                {
                    for(n=0;<<<<<<<<<<<<<<<<<<<<<<<
                }
        }
}
 
int main()
{   
    if(SetConsoleCP(1251)==0)
    {
        cerr<<"Fialed to set codepage!"<<endl;
    }
    if(SetConsoleOutputCP(1251)==0)
    {
        cerr<<"Failed to set OUTPUT page!"<<endl;
    }   
 
int n=50;
cout<<"Введите размер массива: ";
cin>>n;
    int *a=new int[n];
    int *b=new int[n];
    
    // заполняем массив случайными числами и выводим на экран
int RANGE_MIN = 0; // Минимальный элемент
cout<<"Введите минимальный дапазон: ";
cin>>RANGE_MIN;
int RANGE_MAX = 99; // Максимальный элемент
cout<<"Введите максимальный диапазон: ";
cin>>RANGE_MAX;
cout<<"Исходный массив:\n";
    //Пример взят из справки ms-help: //MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vccrt/html/75d9df25-7aaf-4a88-b940-2775559634e8.htm
    for ( int i = 0; i < n; i++ )
    {
        a[i] = (int)(((double) rand() / (double) RAND_MAX) * RANGE_MAX + RANGE_MIN); 
        cout << setw(4) << a[i]; 
    }
    cout <<endl;
// Вызываем функцию сортировки и передаем ей указатель на массив и размер массива:
    sort( a, n); 
    printf("\nМассив, отсортированный по возрастанию:\r\n");
    // для вывода массива на экран требуется цикл:
    for (int i = 0; i < n; i++)
    {
        printf("%4d", a[i]); // выводим элемент массива на экран
    }
    printf("\r\n"); 
    _getch();
    return 0;
}
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
25.01.2012, 10:56 6
stels009, блин, вы же на экзамене! Вам помощь нужна или нет? Если нет, то зачем мы тут беседы ведём? А если нужна, то выражайте мысли чётче, пожалуйста. Что значит "отсортировать на чётность и нечётность"?
0
Заблокирован
Автор FAQ
25.01.2012, 11:12 7
Цитата Сообщение от stels009 Посмотреть сообщение
аписать программу заполнения одномерного массива случайными числами из заданного диапазона. Из полученного массива все четные положительные числа занести во второй массив, а все не четные отрицательные в третий. В каждом из полученных массивов подсчитать количество инверсий. Определить во втором массиве количество элементов являющихся степенью 5. Второй и Третий массивы каждый записать в отдельный файл.
- ниже код на Си
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define n1 25
#define beg -10
#define end 120
 
int sortarr(int n, int * arr)//Îòñîðòèðóåò ìàññèâ è âîçâðàòèò ÷èñëî ïåðåñòàíîâîê
//êàê ÿ ïîíÿë èìåííî ÷èñëî ïåðåñòàíîâîê ïîíèìàåòñÿ ïîä èíâåðñèÿìè
{
    int i, j, buf, count = 0;
    for(    i = 0; i < n; i++)
    for(j = i + 1; j < n; j++)
    {
        if(arr[i] < arr[j])
        {
            buf = arr[i];
            arr[i] = arr[j];
            arr[j] = buf;
            count = count + 1;
        }
    }
    return count;
}
 
int main()
{
    int i;
    //Ñêàæåì ìàññèâû ìàêñ èç n1 ýëåìåíòîâ
    int arr1[n1];
    int arr2[n1];
    int arr3[n1];
    //Äåéñòâèòåëüíîå ÷èñëî ýëåìåíòîâ â ìàññèâàõ
    int n2 = 0;//Ïîêà ìû íå çíàåì ñêîëüêî áóäåò ÷èñåë âî 2-ì
    int n3 = 0;//è â 3-ì ìàññèâàõ
    
    
    time_t t;
    srand(time(&t));//Èíà÷å îò çàïóñêà ê çàïóñêó ñëó÷ ÷èñëà áóäóò ïîâòîðÿòüñÿ
    //Ôîðìèðóåì ìàññèâû
    for(i = 0; i < n1; i++)
    {
        arr1[i] = beg + rand()%(end - beg);
        if(arr1[i] % 2 == 0)
        {
            if(0 <= arr1[i])
            {
                arr2[n2] = arr1[i];
                n2 = n2 + 1;
            }
        }
        else
        {
            if(arr1[i] < 0)
            {
                arr3[n3] = arr1[i];
                n3 = n3 + 1;
            }
        }
    }
    //×èñëî èíâåðñèé â ìàññèâàõ
    int nInv1 = sortarr(n1, arr1);
    int nInv2 = sortarr(n2, arr2);
    int nInv3 = sortarr(n3, arr3);
    printf("Array 1\n");
    for(i = 0; i < n1; i++)
        printf("%d ",arr1[i]);
    printf("Num of inversions\n");
    printf("arr1 : %d\n",nInv1);
    printf("arr2 : %d\n",nInv2);
    printf("arr3 : %d\n",nInv3);
    system("pause");
    return 0;
}
Миниатюры
У меня сейчас экзамен кто как может hel_p программа на массивы.  
0
16 / 15 / 1
Регистрация: 05.04.2011
Сообщений: 426
25.01.2012, 11:13  [ТС] 8
Это значит есть 1 исходный массив из не го надо взять все четные положительные во 2й массив засунуть а е четные отрицательные в 3й.
0
Заблокирован
Автор FAQ
25.01.2012, 11:15 9
stels009, в моем коде нет лишь записи в файл, думаю это глубоко тривиальная задача, в остальном думаю это как раз то что вам надо...
Успехов вам на экзамене!

Добавлено через 45 секунд
stels009,
Цитата Сообщение от stels009 Посмотреть сообщение
Это значит есть 1 исходный массив из не го надо взять все четные положительные во 2й массив засунуть а е четные отрицательные в 3й.
- смотри мой код там уже всё это есть + сортировка с подсчётом перестановок(инверсий)

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(arr1[i] % 2 == 0)
* * * * * * * * {
* * * * * * * * * * * * if(0 <= arr1[i])
* * * * * * * * * * * * {
* * * * * * * * * * * * * * * * arr2[n2] = arr1[i];
* * * * * * * * * * * * * * * * n2 = n2 + 1;
* * * * * * * * * * * * }
* * * * * * * * }
* * * * * * * * else
* * * * * * * * {
* * * * * * * * * * * * if(arr1[i] < 0)
* * * * * * * * * * * * {
* * * * * * * * * * * * * * * * arr3[n3] = arr1[i];
* * * * * * * * * * * * * * * * n3 = n3 + 1;
* * * * * * * * * * * * }
* * * * * * * * }
0
16 / 15 / 1
Регистрация: 05.04.2011
Сообщений: 426
25.01.2012, 11:16  [ТС] 10
Вот примерно так я сделал
C++
1
2
3
4
5
6
7
8
9
10
11
            er = a[j] / 2;
                if(er != 0)
                {
                    ++tv;
                    c[tv]=a[j];
                }
                else
                {
                    ++tt;
                    b[tt]= a[j];
                }
0
Заблокирован
Автор FAQ
25.01.2012, 11:18 11
stels009, ты что прикалываешся???Я кому старался - пост 7???
Ну не хочешь брать готовый код, сдавай сам...
0
16 / 15 / 1
Регистрация: 05.04.2011
Сообщений: 426
25.01.2012, 11:32  [ТС] 12
-=ЮрА=- простите но просто в институте иннет тормазнутый воопщем я взял ваш пример вот что получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include<iostream>  
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<String.h>
#include<ctype.h>
#include<stdlib.h>
#include<windows.h>
using namespace std;   // Используем стандартное пространство имён
 
/* Функция, выполняющая перестановку значений двух переменных (обратите внимание на то, что аргументы должны быть объявлены как ссылки): */
void swap(int& a, int& b)
{
        int c;
        c=a; a=b; b=c;
}
 
void sort(int* a, int n, int* b, int* c)
{int er=0,tt=0, tv=0, rr=0;
    for ( int i = 1; i < n; i++ ) // отсчитываем проходы по массиву
        for ( int j = 0; j < n-i; j++) // проходим по массиву
        {   
        if(a[i] % 2 == 0)
            {
                if(0 <= a[i])
                {
                b[tt] = a[i];
                tv = tv + 1;
                }
            }
            else
            {
                if(a[i] < 0)
                {
                c[rr] = a[i];
                rr = rr + 1;
                }
            }
        
        }
}
 
int main()
{   
    if(SetConsoleCP(1251)==0)
    {
        cerr<<"Fialed to set codepage!"<<endl;
    }
    if(SetConsoleOutputCP(1251)==0)
    {
        cerr<<"Failed to set OUTPUT page!"<<endl;
    }   
 
int n=50;
cout<<"Введите размер массива: ";
cin>>n;
    int *a=new int[n];
    int *b=new int[n];// объявляем массив из 50 элементов
    int *c=new int[n];
    // заполняем массив случайными числами и выводим на экран
int RANGE_MIN = 0; // Минимальный элемент
cout<<"Введите минимальный дапазон: ";
cin>>RANGE_MIN;
int RANGE_MAX = 99; // Максимальный элемент
cout<<"Введите максимальный диапазон: ";
cin>>RANGE_MAX;
cout<<"Исходный массив:\n";
    //Пример взят из справки ms-help: //MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vccrt/html/75d9df25-7aaf-4a88-b940-2775559634e8.htm
    for ( int i = 0; i < n; i++ )
    {
        a[i] = (int)(((double) rand() / (double) RAND_MAX) * RANGE_MAX + RANGE_MIN); // случайные числа из диапазона [-20, 30] 
        cout << setw(4) << a[i]; /* выводим на экран элемент массива (ширина поля вывода – 4 */
    }
    cout <<endl;
// Вызываем функцию сортировки и передаем ей указатель на массив и размер массива:
    sort( a, n, b, c); 
    printf("\nМассив с четными числами:\r\n");
    // для вывода массива на экран требуется цикл:
    for (int i = 0; i < n; i++)
    {
        printf("%4d", b[i]); // выводим элемент массива на экран
    }
        printf("\nМассив с не четными числами:\r\n");
    // для вывода массива на экран требуется цикл:
    for (int i = 0; i < n; i++)
    {
        printf("%4d", c[i]); // выводим элемент массива на экран
    }
    printf("\r\n"); // перевод курсора в начало следующей строки
    _getch();
    return 0;
}
но при выходе он пишит иероглифы...
0
Заблокирован
Автор FAQ
25.01.2012, 11:51 13
stels009, твой код ужасен и раздут до ужаса (не обижайся), сейчас перепишу свой на плюсах...Сортировку твою вообще не понял, мой прямой выбор прекрасно сортирует (буду писать именно с ним)
Цитата Сообщение от stels009 Посмотреть сообщение
if(SetConsoleCP(1251)==0)
* * * * {
* * * * * * * * cerr<<"Fialed to set codepage!"<<endl;
* * * * }
* * * * if(SetConsoleOutputCP(1251)==0)
* * * * {
* * * * * * * * cerr<<"Failed to set OUTPUT page!"<<endl;
* * * * }
- есть простая функция system("chcp 1251"); которая заменит всё это, на крайняк измени шрифт своего приложения на LucindaConsole
0
16 / 15 / 1
Регистрация: 05.04.2011
Сообщений: 426
25.01.2012, 11:55  [ТС] 14
всем спс получил д
0
Заблокирован
Автор FAQ
25.01.2012, 12:05 15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int sortarr(int n, int * arr)//Îòñîðòèðóåò ìàññèâ è âîçâðàòèò ÷èñëî ïåðåñòàíîâîê
//êàê ÿ ïîíÿë èìåííî ÷èñëî ïåðåñòàíîâîê ïîíèìàåòñÿ ïîä èíâåðñèÿìè
{
    int i, j, buf, count = 0;
    for(    i = 0; i < n; i++)
    for(j = i + 1; j < n; j++)
    {
        if(arr[i] < arr[j])
        {
            buf = arr[i];
            arr[i] = arr[j];
            arr[j] = buf;
            count = count + 1;
        }
    }
    return count;
}
 
int main()
{
    system("chcp 1251");//Ðóññèôèöèðóåì
    //Ñêàæåì ìàññèâû ìàêñ èç n1 ýëåìåíòîâ
    int i, n1, beg, end;
    cout<<"Ââåäèòå ðàçìåð ìàññèâà: ";cin>>n1;
    int *arr1 = new int[n1];
    int *arr2 = new int[n1];
    int *arr3 = new int[n1];
    cout<<"Ââåäèòå äèàïàçîí ãåíåðàöèè [beg;end]\n";
    cout<<"beg = ";cin>>beg;
    cout<<"end = ";cin>>end;
    //Äåéñòâèòåëüíîå ÷èñëî ýëåìåíòîâ â ìàññèâàõ
    int n2 = 0;//Ïîêà ìû íå çíàåì ñêîëüêî áóäåò ÷èñåë âî 2-ì
    int n3 = 0;//è â 3-ì ìàññèâàõ
 
    time_t t;
    srand(time(&t));//Èíà÷å îò çàïóñêà ê çàïóñêó ñëó÷ ÷èñëà áóäóò ïîâòîðÿòüñÿ
    //Ôîðìèðóåì ìàññèâû
    cout<<"Èñõîäíûé ìàññèâ\n";
    for(i = 0; i < n1; i++)
    {
        arr1[i] = beg + rand()%(end - beg);
        cout<<arr1[i]<<" ";
        if(arr1[i] % 2 == 0)
        {
            if(0 <= arr1[i])
            {
                arr2[n2] = arr1[i];
                n2 = n2 + 1;
            }
        }
        else
        {
            if(arr1[i] < 0)
            {
                arr3[n3] = arr1[i];
                n3 = n3 + 1;
            }
        }
    }
    //×èñëî èíâåðñèé â ìàññèâàõ
    int nInv1 = sortarr(n1, arr1);
    int nInv2 = sortarr(n2, arr2);//åñëè n2 == 0 òî öèêëû ôóíêöèè ïðîñòî íå îòðàáîòàþò
    int nInv3 = sortarr(n3, arr3);//àíàëîãè÷íî
    cout<<"\nÎòñîðòèðîâàííûé 1 ìàññèâ\n";
    for(i = 0; i < n1; i++)
        printf("%d ",arr1[i]);
    cout<<"\n×èñëî èíâåðñèé : "<<nInv1<<endl;
    if(n2 == 0)
        cout<<"Ìàññèâ íå ñîæäåðæèò ÷¸òíûõ ïîëîæèòåëüíûõ\n";
    else
    {
        cout<<"\nÎòñîðòèðîâàííûé ìàññèâ c ÷¸òíûìè ÷èñëàìè\n";
        for(i = 0; i < n2; i++)
            cout<<arr2[i]<<" ";
        cout<<"\n×èñëî èíâåðñèé : "<<nInv2<<endl;
    }
    if(n3 == 0)
        cout<<"Ìàññèâ íå ñîæäåðæèò íå÷¸òíûõ îòðèöàòåëüíûõ\n";
    else
    {
        cout<<"\nÎòñîðòèðîâàííûé ìàññèâ c íå÷¸òíûõ ÷èñëàìè\n";
        for(i = 0; i < n3; i++)
            cout<<arr3[i]<<" ";
        cout<<"\n×èñëî èíâåðñèé : "<<nInv3<<endl;
    }
    system("pause");
    delete [] arr1;
    delete [] arr2;
    delete [] arr3;
    return 0;
}
Миниатюры
У меня сейчас экзамен кто как может hel_p программа на массивы.  
Вложения
Тип файла: rar main.cpp.rar (973 байт, 3 просмотров)
0
25.01.2012, 12:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2012, 12:05
Помогаю со студенческими работами здесь

У меня последние 3 дня практики кто может п о м о г и т е
(1.3)Напишите программу по использованию унарных операций для двух переменных – увеличение и...

Кто может объяснить как работает эта программа?
Задача такая : нужно считать из строки и вывести то, что находится внутри кавычек, сам решил - код...

А может кто то сказать почему у меня шум в колонках фон идёт !!!
А может кто то сказать почему у меня шум в колонках фонит и это не колонки на многих колонках...

Кто может написать несложную(сложную для меня) прогу. Естественно за деньги!!!
Очень нужно.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru