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

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

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

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

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

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

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

вывести на друк слово "Одинаковые" если эти массивы полностью совпадают,и слово "Разные" в противоположном случае. - C++
Создать два символьных массива по 12 элементов , и вывести на друк слово &quot;Одинаковые&quot; если эти массивы полностью совпадают,и слово &quot;Разные&quot;...

Узнать, есть ли в файле одинаковые числа - Pascal
Дан бинарный файл с натуральными числами. Выполнить надо 5 условий, не знаю, как узнать, есть ли в файле одинаковые числа и как можно...

Узнать, есть ли в коллекции одинаковые элементы - C#
Доброго времени суток, есть коллекция List&lt;string&gt;. В ней набор элементов, а теперь вопрос, как узнать, они все уникальны или же есть...

Паскаль. Узнать одинаковые поля записей - Pascal ABC
Помогите! Вводим число больных. Для больных каждом указываем имя, фамилию, болезнь и т.д. Это я сделал. Суть задачи: 1) Вывести...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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 должно быть известно на этапе компиляции.
1
AnreyKazakov
Заблокирован
11.09.2012, 15:59  [ТС] #3
Плохо, у меня тупой MinGW хоть бы слово сказал =( работают на нем оба кода нормально, я х з как...
0
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++ прекрасно это компилируют
0
AnreyKazakov
Заблокирован
11.09.2012, 16:02  [ТС] #5
Цитата Сообщение от pianist Посмотреть сообщение
Вообщето последние версии g++ прекрасно это компилируют
Значит можно забыть про "new [xx]" ? раз и так нормально компилируется....
0
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
11.09.2012, 16:13 #6
тут такая тема... Я знаю, что это работает, но я не интересовался как. Возможно существуют подводные камни
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
11.09.2012, 16:15 #7
Подобный код
C
1
2
int n;
int arr[n];
Это все происки C99.
0
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.
0
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
11.09.2012, 16:17 #9
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Значит можно забыть про "new [xx]" ? раз и так нормально компилируется....
В общем, я бы не советовал этим пользоваться. new прекрасно работает.
Особенно, если хочешь, чтобы на других компиляторах отрабатывало.
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
11.09.2012, 16:17 #10
Говорю же, это C, а не C++ :-)
0
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
11.09.2012, 16:19 #11
Значит можно забыть про "new [xx]" ? раз и так нормально компилируется....
ради переносимости забывать не стоит, на студии не скомпилируется
0
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; производительность почти не снижается....
0
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
0
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
11.09.2012, 16:52 #14
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
if (strcmp(pc2,pc)) /*если две строки равны то....*/
; /*Ничего! просто равны и все тут*/
Здесь в коментарии немного неправильно. Функция strcmp() возвращает 0 если строки равны.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 16:52
Привет! Вот еще темы с ответами:

Сравнить и сгруппировать одинаковые массивы - PHP
Добрый день. Помогите в решении задачи, пожалуйста. Есть массив из 261 элемента, каждый элемент (начиная с 1 - го) - вложенный массив...

Сравнить массивы на одинаковые буквы - Turbo Pascal
Кто поможет решить задачку? 1) Дано 2 массива. Сравнить массивы на одинаковые буквы. Тоесть если есть в одинаковые буквы в массиве. Типа...

Найти одинаковые массивы в Map - Java SE
День добрый. Не могу найти как проверять два массива на равенство. У меня есть мапа, состоящая из массивов и кол-ва одинаковых...

Массивы (одинаковые элементы расположенные подряд; при повторе элемента оставить только первое вхождение) - C++ Builder
Нужна помощь в написании программ: 1. Дано натуральное число n, целые числа a0, a1, a2 .. an. Среди чисел имеется группа из одинаковых...


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

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

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