Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массивы Добавление нового элемента 
:(
    Опции темы
Zverushka
  Дата 29.10.2011, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.5.2011

Репутация: нет
Всего: нет



Здрасте, есть код который перекидует 1 эелемент из старого массива в новый почему не работает ?

Код

#include <iostream>
using namespace std;

int *AddArrEnd(int *arr, int n, int val){

    int *temp = new int[n+1];
    
    int j = 0;
        for(int i = 0; i<n+1; i++, j++){
            j++;
            if(temp[i] == 0){
                temp[0] = val;
            }else{
                temp[j] = arr[i];
            }


        }


        delete [] arr;
        
        return temp;
}

void main(){
    setlocale(LC_ALL, "rus");

    int n = 10;

    int *arr = new int[n]; 
    
    for(int i =0; i<n; i++){
        arr[i] = rand()%10;
        cout << arr[i];
    }

    arr = AddArrEnd(arr, n++, -1);

    cout << "\n\nNew Arr: " << endl << endl;

    for(int i = 0; i<n; i++){
        cout << arr[i];
    }
    cout << endl << endl;
}


Уже рисовал с пояснениями не пойму что не так подскажите пожалуйста 
PM MAIL   Вверх
math64
Дата 29.10.2011, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Главная ошибка здесь:
Цитата(Zverushka @  29.10.2011,  22:17 Найти цитируемый пост)
Код
i++, j++){            j++;

В результате j увеличивается на 2
Код

temp[0] = val;
for (int i = 0, j = 1; i < n; i++, j++) {


PM   Вверх
borisbn
Дата 29.10.2011, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Zverushka, 
в этой строке
Цитата(Zverushka @  29.10.2011,  22:17 Найти цитируемый пост)
if(temp[i] == 0){

идёт обращение к элементу массива temp с индексом i, а в него никто ничего не записывал.

Цитата(Zverushka @  29.10.2011,  22:17 Найти цитируемый пост)
 int *temp = new int[n+1];

не иниуиализирует массив, а выделяет под него память. в этой памяти находится так называемый "мусор", т.е. всё, что угодно


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Zverushka
Дата 29.10.2011, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.5.2011

Репутация: нет
Всего: нет



Спасибо, а как тогда сделать условие ?  smile 
PM MAIL   Вверх
math64
Дата 30.10.2011, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Цитата(Zverushka @  29.10.2011,  23:36 Найти цитируемый пост)
Спасибо, а как тогда сделать условие ? 

Никак - вынести за пределы цикла, как в моём предыдущем посте.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.