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

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

Войти
Регистрация
Восстановить пароль
 
AnreyKazakov
Заблокирован
#1

Узнать одинаковые ли массивы? - C++

11.09.2012, 15:50. Просмотров 502. Ответов 13
Метки нет (Все метки)

Две программки, два массива, размерность обоих задается с клавиатуры (и как я понимаю раз задаются с клавиатуры до оба динамических) НО, один из них считается динамическим а второй нет, с чем это связано, или я неправильно трактую понятие динамического массива..... Вот их два кода...
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
int main(){
    using std::cout;using std::cin; using std::endl;
    int value;
    cout<<"Введите размерность массива"<<endl;
    cin>>value;
    int* p=new int [value];
    int k=1;
    for(int* q=p;q!=p+value;++q){*q=k;++k;}
    for(int* q=p;q!=p+value;++q){cout<<*q<<endl;}
    return 0;   
    }
и второй обычный
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
int main(){
    using std::cout;using std::cin; using std::endl;
    int value;
    cout<<"Введите размерность массива"<<endl;
    cin>>value;
    int arr[value];
    int* p = arr;
    int k = 1;
    for(int* q=p;q!=p+value;++q){*q=k;++k;}
    for(int* q=p;q!=p+value;++q){cout<<*q<<endl;}
    return 0;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 15:50     Узнать одинаковые ли массивы?
Посмотрите здесь:

Узнать, все ли числа в массиве одинаковые - C++
Обработать массив из целых чисел А (не больше 100 эл-тов), вначале предусматривая заполнение массива числами. Узнать, все ли числа в...

Как узнать есть ли в массиве одинаковые числа и как найти эти числа ? - C++
Всем привет ,можете помочь как узнать есть ли в массиве одинаковые числа и как найти эти числа . Например массив с элементами 1 4 4 0 2 ....

Одинаковые элементы - C++
Задача по C\C++ : В неупорядоченном массиве есть совпадающие элементы. Из каждой группы одинаковых элементов оставаить только один,...

Одинаковые цифры в числах - C++
Введите два числа А и В. Проверьте, есть ли у них одинаковые цифры. Даже не понимаю, с какой стороны подходить к программе.

Найти одинаковые числа - C++
cout &lt;&lt; i &lt;&lt;&quot; &quot;&lt;&lt; n &lt;&lt; endl; i++; Имеется примерно тысяча (и более) строк(i) с различными числами(n). И там может быть...

Найти одинаковые числа - C++
k=2; { for ( n = 1; n &lt; 3000000; n++ ) { if (Primal (k, n) == true) { cout &lt;&lt; i &lt;&lt;&quot; &quot;&lt;&lt; n &lt;&lt; endl; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
11.09.2012, 15:53     Узнать одинаковые ли массивы? #2
C++
1
2
3
4
    int arr[value];
    cout<<"Введите размерность массива"<<endl;
    cin>>value;
    int arr[value];
Должна быть ошибка. Нельзя создать массив таким образом. Для инициализации таким способом value должно быть известно на этапе компиляции.
AnreyKazakov
Заблокирован
11.09.2012, 15:59  [ТС]     Узнать одинаковые ли массивы? #3
Плохо, у меня тупой MinGW хоть бы слово сказал =( работают на нем оба кода нормально, я х з как...
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
11.09.2012, 16:00     Узнать одинаковые ли массивы? #4
Цитата Сообщение от Andsteadur Посмотреть сообщение
C++
1
2
3
4
    int arr[value];
    cout<<"Введите размерность массива"<<endl;
    cin>>value;
    int arr[value];
Должна быть ошибка. Нельзя создать массив таким образом. Для инициализации таким способом value должно быть известно на этапе компиляции.
Вообщето последние версии g++ прекрасно это компилируют
AnreyKazakov
Заблокирован
11.09.2012, 16:02  [ТС]     Узнать одинаковые ли массивы? #5
Цитата Сообщение от pianist Посмотреть сообщение
Вообщето последние версии g++ прекрасно это компилируют
Значит можно забыть про "new [xx]" ? раз и так нормально компилируется....
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
11.09.2012, 16:13     Узнать одинаковые ли массивы? #6
тут такая тема... Я знаю, что это работает, но я не интересовался как. Возможно существуют подводные камни
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
11.09.2012, 16:15     Узнать одинаковые ли массивы? #7
Подобный код
C
1
2
int n;
int arr[n];
Это все происки C99.
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
11.09.2012, 16:17     Узнать одинаковые ли массивы? #8
Странно...

8.3.4 Arrays [dcl.array]
1 In a declaration T D where D has the form
D1 [ constant-expression-opt] attribute-specifier-seq-opt.
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
11.09.2012, 16:17     Узнать одинаковые ли массивы? #9
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Значит можно забыть про "new [xx]" ? раз и так нормально компилируется....
В общем, я бы не советовал этим пользоваться. new прекрасно работает.
Особенно, если хочешь, чтобы на других компиляторах отрабатывало.
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
11.09.2012, 16:17     Узнать одинаковые ли массивы? #10
Говорю же, это C, а не C++ :-)
igorrr37
1644 / 1272 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
11.09.2012, 16:19     Узнать одинаковые ли массивы? #11
Значит можно забыть про "new [xx]" ? раз и так нормально компилируется....
ради переносимости забывать не стоит, на студии не скомпилируется
AnreyKazakov
Заблокирован
11.09.2012, 16:33  [ТС]     Узнать одинаковые ли массивы? #12
Да, подскажите зачем этот код в книжке, там не написано, чет не могу понять что он делает...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstring>
#include <cstddef>
int main(){
    const char* pc="a very long literal string";/*определили массив из чаров*/
    const size_t len = strlen(pc+1);              /*спец переменная len равна длине строки*/
    for (size_t ix=0; ix!=1000000;++ix){         /*цикл от 0 до миллиона*/
        char *pc2=new char[len+1];           /*определили новый массив чаров*/
        strcpy(pc2,pc);                            /*скопировали строку в новый массив*/
        if (strcmp(pc2,pc))                        /*если две строки равны то....*/
        ;                                                /*Ничего! просто равны и все тут*/
        delete[] pc2;                                /*наверно, удалили массив pc2*/
        }
    std::cout<<"Успех!";                             /*это я дорисовал*/
    return 0;   
    }
Добавлено через 3 минуты
может тут показано как delete работает, кстати когда удаляешь строку delete[] pc2; производительность почти не снижается....
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
11.09.2012, 16:34     Узнать одинаковые ли массивы? #13
C++
1
const char* pc="a very long literal string";/*определили массив из чаров*/
Массив чар не определялся. Был определен указатель на const char, который был инициализирован указателем на константную строку.

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main()
{
    const char* pc="a very long literal string";
    const char* p = "a very long literal string";
    if (pc == p)
       std::cout<<"same";
    return 0;   
}
http://liveworkspace.org/code/91b75d...6a3854fe77b2df
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 16:52     Узнать одинаковые ли массивы?
Еще ссылки по теме:

Одинаковые элементы массива - C++
Надо определить сколько в массиве одинаковых элементов, по разному пробывала и никак не получается. #include &lt;iostream&gt; #include...

Создаются одинаковые объекты - C++
Доброго времени суток. Начал изучать ООП и столкнулся с проблемой. Пишу класс работы с матрицами. Имеется такой конструктор: ...

ОДинаковые элементы в списке - C++
Составить программу которая в списке &quot;0&quot;,&quot;1&quot;,&quot;2&quot;,&quot;-1&quot;,&quot;-2&quot;,&quot;3&quot;,&quot;-3&quot;,&quot;0&quot;,&quot;-3&quot;,&quot;3&quot; проверяет есть ли в списке одинаковые...

ГСЧ, одинаковые значения - C++
Подскажите, почему при каждом запуске программы генератор случайных чисел выдает одни и те же значения? т.е. если при первом запуске он...


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

Или воспользуйтесь поиском по форуму:
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
11.09.2012, 16:52     Узнать одинаковые ли массивы? #14
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
if (strcmp(pc2,pc)) /*если две строки равны то....*/
; /*Ничего! просто равны и все тут*/
Здесь в коментарии немного неправильно. Функция strcmp() возвращает 0 если строки равны.
Yandex
Объявления
11.09.2012, 16:52     Узнать одинаковые ли массивы?
Ответ Создать тему
Опции темы

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