Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
anonimious
13 / 13 / 2
Регистрация: 17.10.2011
Сообщений: 54
#1

Упростить код - C++

30.10.2011, 14:32. Просмотров 413. Ответов 9
Метки нет (Все метки)

Добрый день, подскажите, можно ли упростить код (используя уровень знаний как в оригинале)?
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
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;
void main(){
       srand(unsigned(time(NULL)));
       setlocale(LC_ALL,"rus");
       int size1, size2; char sw; bool f1=false;
       cout<<"Введите размер первого массива "; cin>>size1;
       cout<<"Введите размер второго массива "; cin>>size2;
       int *mas1=new int[size1]; int *mas2=new int[size2];
       int *mas3=new int[size1+size2];
       for(int i=0;i<size1;i++) mas1[i]=rand()%90+10;
       for(int i=0;i<size2;i++) mas2[i]=rand()%90+10; cout<<endl;
       //for(int i=0;i<size1;i++) cout<<mas1[i]<<' '; cout<<endl;
       //for(int i=0;i<size2;i++) cout<<mas2[i]<<' '; cout<<endl<<endl;
       cout<<"Что с ними нужно сделать?\n"<<endl;
       cout<<"a-вывести элементы обоих массивов\n";
       cout<<"b-вывести общие элементы обоих массивов\n";
       cout<<"c-вывести элементы первого массива, которые не входят во второй\n";
       cout<<"d-вывести элементы вторoго массива, которые не входят в первый\n";
       cout<<"e-вывести не общие элементы\n\n";
        sw=getch();
        switch(sw){
            case 'a':{
                for(int i=0;i<size1;i++) cout<<mas1[i]<<' '; cout<<endl;
                for(int i=0;i<size2;i++) cout<<mas2[i]<<' '; cout<<endl; break;}
            case 'b':{
                for(int i=0;i<size1;i++)
                    if(mas1[i]==mas2[i]) cout<<mas1[i]<<endl; f1=true; break;}
            case 'c':{
                for(int i=0;i<size1;i++)
                    for(int j=0;j<size2;j++)
                        if(mas1[i]!=mas2[j]) {cout<<mas1[i]<<' '; break;}
                        cout<<endl; break;}
            case 'd':{
                for(int i=0;i<size2;i++)
                    for(int j=0;j<size2;j++)
                        if(mas2[i]!=mas1[j]) {cout<<mas2[i]<<' '; break;}
                        cout<<endl; break;}
            case 'e':{
                for(int i=0;i<size1;i++)
                    for(int j=0;j<size2;j++)
                        if(mas1[i]!=mas2[j]) {mas3[i]=mas1[i]; break;}
                for(int i=0;i<size2;i++)
                    for(int j=0;j<size2;j++)
                        if(mas2[i]!=mas1[j]) {mas3[i+size1]=mas2[i]; break;}
                for(int i=0;i<(size1+size2);i++)
                    for(int j=0;j<(size1+size2);j++)
                        if(mas3[i]!=mas3[j]) {cout<<mas3[i]<<' '; break;}
                cout<<endl; break;}
            default : {cout<<"Неправильный выбор\n";}}
       delete []mas1; delete []mas2; delete []mas3;
       if(f1) cout<<"Общих элементов нет"<<endl;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 14:32     Упростить код
Посмотрите здесь:

упростить код - C++
есть решена задача, надо упростить, из того перебора в инструкции switch() на enum ( перечисленный тип, мб через рандом но чет не выходит...

Упростить код - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { size_t rowsCount; cout &lt;&lt; &quot;N: &quot;; cin...

Упростить код - C++
Имеется код, как можно сделать что бы подщёт шел не с аа а с 0 // 400.cpp: определяет точку входа для консольного приложения. // ...

Упростить код - C++
доброго времени суток, я совсем новичок в С++ (да и в программировании) сейчас учусь по Страуструпу, и возникла даже не то что проблема,...

Упростить код - C++
Добрый вечер. Такая задача. Исходные данные: вектор размерностью кратной 3 Выходные данные: вектор, получающийся из исходного...

Упростить код - C++
Добрый вечер! Есть задача: дан вещественный массив, определить номер столбца с наибольшим количеством положительных элементов. После...

Упростить код - C++
Как упростить вот такой код? Спасибо за внимание. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
30.10.2011, 15:29     Упростить код #2
Какую задачу этот код решает ( не хочу углубляться )?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.10.2011, 15:30     Упростить код #3
Только если более читабельным сделать. По коду вроде нечего упрощать.
main должно возвращать значение, соответственно быть int, а не void.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
30.10.2011, 15:34     Упростить код #4
Я бы делал через STL ( вектор и множество ). Получилось бы короче...
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.10.2011, 15:36     Упростить код #5
Цитата Сообщение от Mиxaил Посмотреть сообщение
Я бы делал через STL
Не вариант, т.к.
Цитата Сообщение от anonimious Посмотреть сообщение
используя уровень знаний как в оригинале
anonimious
13 / 13 / 2
Регистрация: 17.10.2011
Сообщений: 54
30.10.2011, 15:48  [ТС]     Упростить код #6
Mиxaил, описано же
C++
1
2
3
4
5
6
cout<<"Что с ними нужно сделать?\n"<<endl;
           cout<<"a-вывести элементы обоих массивов\n";
           cout<<"b-вывести общие элементы обоих массивов\n";
           cout<<"c-вывести элементы первого массива, которые не входят во второй\n";
           cout<<"d-вывести элементы вторoго массива, которые не входят в первый\n";
           cout<<"e-вывести не общие элементы\n\n";
Deviaphan, работа в VS2010, там так можно

Добавлено через 2 минуты
Deviaphan, Если не трудно, приведите пример более читабельного
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.10.2011, 15:52     Упростить код #7
Цитата Сообщение от anonimious Посмотреть сообщение
работа в VS2010, там так можно
вы выложили код на общественное обозрение, а у меня MinGW и сдесь так нельзя!!!

Добавлено через 3 минуты
пример более читабельного кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
switch(sw)
{
case 'a':
    for(int i = 0; i < size1; ++i)
        cout << mas1[i] << '\n';
 
    for(int i = 0; i < size2; ++i)
        cout << mas2[i] << '\n'; 
 
    break;
 
case 'b':
    for(int i = 0; i < size1; ++i)
    {
       if(mas1[i] == mas2[i]) 
           cout << mas1[i] << endl; 
    }
    f1 = true; 
    break;
//...
}
anonimious
13 / 13 / 2
Регистрация: 17.10.2011
Сообщений: 54
30.10.2011, 15:53  [ТС]     Упростить код #8
Jupiter, тогда
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
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;
int main(){
       srand(unsigned(time(NULL)));
           setlocale(LC_ALL,"rus");
           int size1, size2; char sw; bool f1=false;
           cout<<"Введите размер первого массива "; cin>>size1;
           cout<<"Введите размер второго массива "; cin>>size2;
           int *mas1=new int[size1]; int *mas2=new int[size2];
           int *mas3=new int[size1+size2];
           for(int i=0;i<size1;i++) mas1[i]=rand()%90+10;
           for(int i=0;i<size2;i++) mas2[i]=rand()%90+10; cout<<endl;
           //for(int i=0;i<size1;i++) cout<<mas1[i]<<' '; cout<<endl;
           //for(int i=0;i<size2;i++) cout<<mas2[i]<<' '; cout<<endl<<endl;
           cout<<"Что с ними нужно сделать?\n"<<endl;
           cout<<"a-вывести элементы обоих массивов\n";
           cout<<"b-вывести общие элементы обоих массивов\n";
           cout<<"c-вывести элементы первого массива, которые не входят во второй\n";
           cout<<"d-вывести элементы вторoго массива, которые не входят в первый\n";
           cout<<"e-вывести не общие элементы\n\n";
                sw=getch();
                switch(sw){
                        case 'a':{
                                for(int i=0;i<size1;i++) cout<<mas1[i]<<' '; cout<<endl;
                                for(int i=0;i<size2;i++) cout<<mas2[i]<<' '; cout<<endl; break;}
                        case 'b':{
                                for(int i=0;i<size1;i++)
                                        if(mas1[i]==mas2[i]) cout<<mas1[i]<<endl; f1=true; break;}
                        case 'c':{
                                for(int i=0;i<size1;i++)
                                        for(int j=0;j<size2;j++)
                                                if(mas1[i]!=mas2[j]) {cout<<mas1[i]<<' '; break;}
                                                cout<<endl; break;}
                        case 'd':{
                                for(int i=0;i<size2;i++)
                                        for(int j=0;j<size2;j++)
                                                if(mas2[i]!=mas1[j]) {cout<<mas2[i]<<' '; break;}
                                                cout<<endl; break;}
                        case 'e':{
                                for(int i=0;i<size1;i++)
                                        for(int j=0;j<size2;j++)
                                                if(mas1[i]!=mas2[j]) {mas3[i]=mas1[i]; break;}
                                for(int i=0;i<size2;i++)
                                        for(int j=0;j<size2;j++)
                                                if(mas2[i]!=mas1[j]) {mas3[i+size1]=mas2[i]; break;}
                                for(int i=0;i<(size1+size2);i++)
                                        for(int j=0;j<(size1+size2);j++)
                                                if(mas3[i]!=mas3[j]) {cout<<mas3[i]<<' '; break;}
                                cout<<endl; break;}
                        default : {cout<<"Неправильный выбор\n";}}
           delete []mas1; delete []mas2; delete []mas3;
           if(f1) cout<<"Общих элементов нет"<<endl; return 0;}
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.10.2011, 16:01     Упростить код #9
Цитата Сообщение от anonimious Посмотреть сообщение
там так можно
То что это компилируется не значит, что так можно. Это противоречит стандарту. Программа должна возвращать код ошибки при завершении, для использования её в скриптах и т.п.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2011, 16:05     Упростить код
Еще ссылки по теме:

Упростить код - C++
#include&lt;iostream&gt; using namespace std; int main() { int a, b, c, d = 0, g = 0, f = 0; cin &gt;&gt; a &gt;&gt; b &gt;&gt; c; if (a &gt; 0) d++; ...

Упростить код - C++
Разработать рекурсивную функцию , возвращающую значение : для перевода числа из двоичной системы счисления в десятичную; Как упростить...

Упростить код - C++
Создавал раннее тему с таковой задачей:Нужен код для шифрования русскоязычного текста методом простой подстановки(каждой букве алфавита...

Как упростить код - C++
Все работает, все компилируется... Можно как нибудь упростить код, сделать его более грамотным с точки зрения асов...? ...

Возможно-ли упростить код? - C++
При выполнении хотя бы одного условия равенства, вывести только один из двух равных элементов. На выходе: b и три элемента из c, c, d, d. ...


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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.10.2011, 16:05     Упростить код #10
Цитата Сообщение от anonimious Посмотреть сообщение
Добрый день, подскажите, можно ли упростить код (используя уровень знаний как в оригинале)?
Можно, пропишите отдельно функции инициализации и вывода элементов массива, тогда дублировать циклы не надо. Вообще лучше всю программу на отдельные функции разбить. Зачем все лепить в одной функции.
Yandex
Объявления
30.10.2011, 16:05     Упростить код
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru