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

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

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

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

30.10.2011, 14:32. Просмотров 417. Ответов 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;}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 14:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упростить код (C++):

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
30.10.2011, 15:29 #2
Какую задачу этот код решает ( не хочу углубляться )?
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.10.2011, 15:30 #3
Только если более читабельным сделать. По коду вроде нечего упрощать.
main должно возвращать значение, соответственно быть int, а не void.
0
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
30.10.2011, 15:34 #4
Я бы делал через STL ( вектор и множество ). Получилось бы короче...
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.10.2011, 15:36 #5
Цитата Сообщение от Mиxaил Посмотреть сообщение
Я бы делал через STL
Не вариант, т.к.
Цитата Сообщение от anonimious Посмотреть сообщение
используя уровень знаний как в оригинале
0
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, Если не трудно, приведите пример более читабельного
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 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;
//...
}
2
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;}
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.10.2011, 16:01 #9
Цитата Сообщение от anonimious Посмотреть сообщение
там так можно
То что это компилируется не значит, что так можно. Это противоречит стандарту. Программа должна возвращать код ошибки при завершении, для использования её в скриптах и т.п.
1
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.10.2011, 16:05 #10
Цитата Сообщение от anonimious Посмотреть сообщение
Добрый день, подскажите, можно ли упростить код (используя уровень знаний как в оригинале)?
Можно, пропишите отдельно функции инициализации и вывода элементов массива, тогда дублировать циклы не надо. Вообще лучше всю программу на отдельные функции разбить. Зачем все лепить в одной функции.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2011, 16:05
Привет! Вот еще темы с ответами:

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.10.2011, 16:05
Ответ Создать тему
Опции темы

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