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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поменять местами два числа, Поменять местами два числа 
V
    Опции темы
merfi
  Дата 3.12.2008, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть две переменных . В них хранятся два значения . Как поменять местами значения в переменных не используя третию ячейку. Я так понимаю что дело в указателях . Как не парился ничего не получилось. В инете тоже обыскался . На С++ примера не нашел .
--------------------
Стремитесь к совершенству! Неуклонно идите вперед! Но помните, что Ковчег сделал любитель а Титаник построили профессионалы
PM MAIL   Вверх
mrbrooks
Дата 3.12.2008, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



merfi, не оябязательно в указателях - можно и через ссылки
Код

void func(int &a, int &b)
{
int tmp = a;
a = b;
b = tmp;
}

PM MAIL   Вверх
merfi
  Дата 3.12.2008, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А можно без использования функции Так как там есть tmp (третия ячейка)
Хотелосьбы увидеть :
Код

int main(void){
    int a;
    int b;
    int *pointer;
    ......
     .......

}
  


--------------------
Стремитесь к совершенству! Неуклонно идите вперед! Но помните, что Ковчег сделал любитель а Титаник построили профессионалы
PM MAIL   Вверх
UniBomb
Дата 3.12.2008, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



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

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



вариант1:

Код

int a(10), b(15);

a = a^b;
b = a^b;
a =  b^a;


вариант2:

Код

int a(10), b(15);

a = a*b;
b = a/b;
a =  b/a;


вариант3:

Код

int a(10), b(15);

a = a+b;
b = a-b;
a =  b-a;


хотя не уверен на счёт последних двух (в блокноте эти варианты записаны, но не доказаны)..
PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 3.12.2008, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



merfi, 
Код

*p = a;
a = b;
b = *p;


Добавлено через 4 минуты и 50 секунд
UniBombб как то не гламурно  smile  smile 
PM MAIL   Вверх
UniBomb
Дата 3.12.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



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

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



Цитата(mrbrooks @  3.12.2008,  09:19 Найти цитируемый пост)
как то не гламурно

зато работает smile

Добавлено через 43 секунды
а у тебя по любому используется третья переменая (указатель)  smile 
PM MAIL ICQ Skype   Вверх
merfi
  Дата 3.12.2008, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Мне кажется не совсем работает

:\ms60\revers\rev.cpp(16) : warning C4700: local variable 'p' used without having been initialized

при запуске Access violation

--------------------
Стремитесь к совершенству! Неуклонно идите вперед! Но помните, что Ковчег сделал любитель а Титаник построили профессионалы
PM MAIL   Вверх
mrbrooks
Дата 3.12.2008, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



UniBomb, дык он сам про нее написал  smile вопрос риторический - что быстрее присваивание или математика с присваиванием  smile 
PM MAIL   Вверх
xvr
Дата 3.12.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(mrbrooks @ 3.12.2008,  09:19)
merfi, 
Код

*p = a;
a = b;
b = *p;


Добавлено @ 09:23
UniBombб как то не гламурно  smile  smile

Вообще то p должна куда то указывать, видимо на ту самую 3ю переменную, которую автор темы и не хотел вводить.

Автору темы: Если переменные не целочисленные, а произвольные, то без 3й переменной никак   smile 
PM MAIL   Вверх
mrbrooks
Дата 3.12.2008, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



xvr, 
Цитата(merfi @  3.12.2008,  09:03 Найти цитируемый пост)
А можно без использования функции Так как там есть tmp (третия ячейка)
Хотелосьбы увидеть :
    
Код

int main(void){
    int a;
    int b;
    int *pointer;
    ......
     .......

}

я исходил из этих условий.  поэтому мое p есть его pointer
PM MAIL   Вверх
merfi
  Дата 3.12.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ошибку дает этот код
Код

#include <stdio.h>
#include <iostream.h>

int main(void){
    int x;
    int y;
    int *p;
    

    cout << "Enter x: ";
    cin >> x;
    cout << "Enter y: ";
    cin >> y;
    cout << "reverse x and y";

    *p = x;
    x = y;
    y = *p;
    
    
    cout << "result \n";
    cout << " x=" << x << " y=" << y ;

    return 0;
}


Мне кажется переменные определены
Вот этот код дает предупреждение 
А при выполнении Access violation

Это сообщение отредактировал(а) merfi - 3.12.2008, 11:28
--------------------
Стремитесь к совершенству! Неуклонно идите вперед! Но помните, что Ковчег сделал любитель а Титаник построили профессионалы
PM MAIL   Вверх
mrbrooks
Дата 3.12.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



merfi, ну дык указатель же должен на что то указывать

Код

int *p = new int;


Добавлено через 1 минуту и 18 секунд
я вот не пойму одного - если есть возможность использовать указатель - почему бы не использовать просто переменную  smile . 
PM MAIL   Вверх
merfi
  Дата 3.12.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да в том то всё дело что именно указатель а не переменую Кстати один из вопросов на собеседовании
--------------------
Стремитесь к совершенству! Неуклонно идите вперед! Но помните, что Ковчег сделал любитель а Титаник построили профессионалы
PM MAIL   Вверх
mrbrooks
Дата 3.12.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



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

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

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

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

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


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

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


 




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


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

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