Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
1

Обменять значение перменных

09.12.2010, 12:35. Показов 1076. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть перемные a=5, b=4, нужно что было b=5,a=c;, но при этом не применяя дополнительных перменнных. Тоесть работать только с а и б.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2010, 12:35
Ответы с готовыми решениями:

Найти минимальное и максимальное значение в массиве и обменять их местами
Задание. Составьте алгоритм и программу выполнения варианта задания для одномерных массивов и...

инициализация перменных в конструкторе
у меня есть статический вектор векторов инт(vector<vector<int>>),который мне нужно заполнить...

сравнение двух перменных
Как реализовать. Если хотя бы одна переменная существует то выполнить код ...

DLL библиотки, вывод перменных
Начал изучать DLL шки! И сразу возник такой вопрос! Вот написал я в dll массив и переменные: ...

18
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
09.12.2010, 12:37 2
а=с?? что за с?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
09.12.2010, 12:50 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
void swap ( int * a, int * b){
    *a ^= *b;
    *b = *a ^ *b;
    *a = *a ^ *b;
}
 
int main(void){
    int a = 13, b = 69;
    
    printf("a = %d\tb = %d\n", a, b);
    swap(&a, &b);
    printf("a = %d\tb = %d\n", a, b);
    
    return 0;
}
1
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
09.12.2010, 13:01 4
Ещё вариант:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
void swap(int *a, int *b)
{
    *a = *a + *b;
    *b = *a - *b;
    *a = *a - *b;
}
 
int main(void)
{
    int a = 5, b = 99;
 
    printf("a = %d\tb = %d\n", a, b - 95);
    swap(&a, &b);
    printf("a = %c\tb = %d\n", a, b);
 
    return 0;
}

Не по теме:

P.S. Как и просили)))

1
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
09.12.2010, 13:06  [ТС] 5
нечайно написал c
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
09.12.2010, 13:07 6
Тогда так)))

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
void swap(int *a, int *b)
{
    *a = *a + *b;
    *b = *a - *b;
    *a = *a - *b;
}
 
int main(void)
{
    int a = 5, b = 4;
 
    printf("a = %d\tb = %d\n", a, b);
    swap(&a, &b);
    printf("a = %d\tb = %d\n", a, b);
 
    return 0;
}
0
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
09.12.2010, 13:16  [ТС] 7
C++
1
2
3
4
5
void swap ( int * a, int * b){
        *a ^= *b;
        *b = *a ^ *b;
        *a = *a ^ *b;
}
правдо си я начал изучать только сёдня, так что пару вопросов если не трудно:
1)void swap-это как я понял функция?
2)int * a, int * b -что обозначают в данном случаи знаки умножения
3)что означает ^

по заданию числа вводяцо с клавы:
я сделал так
C++
1
2
3
4
printf("a=");
    scanf("%d",&a);
    printf("a=");
    scanf("%d",&b);
но сам всегда использовал cout и cin-что лучше использовать?
и последний вопрос про scanf("%d",&a); зачем нужно "%d",&, ибо я их просто вытащил из примеров на форуме.
0
Заблокирован
09.12.2010, 13:42 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    int a , b;
    cout<<"a = ";
    cin>>a;
    cout<<"b = ";
    cin>>b;
    cout<<"a = "<<a<<"\tb = "<<b<<endl;
    a = b ^ a;
    b = a ^ b;
    a = b ^ a;
    cout<<"a = "<<a<<"\tb = "<<b<<endl;
    system("pause");
    return 0;
}
может так проще будет для вас
Цитата Сообщение от nonamez123 Посмотреть сообщение
1)void swap-это как я понял функция?
да
2)int * a, int * b -что обозначают в данном случаи знаки умножения
знаки умножения - указатели, &а - разыменовать указатель(как по-человечески сказать, не помню, типа добраться до значения переменной, на которую указывает указатель)
3)что означает ^
- логическая операция "исключающее или"
"%d" стоит, чтоб сказать printf'у, чтобы он выводил целое число
примерно так
1
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
09.12.2010, 13:48 9
В дополнение к предыдущему посту:

Указатель - переменная, которая может хранить адрес другой переменной. Если бы в функцию swap мы передавали не адреса переменных (вызов функции происходит так: swap(&a, &b), операция & - взятие адреса переменной в памяти), а значения (было бы swap(a, b)), то эти значения копировались бы в собственные переменные a и b функции swap, и значения менялись бы у совсем других переменных a и b, а те, что мы на самом деле хотим поменять, оставались бы неизменными. А так как мы передаём в функцию не значения переменных, а их адреса, то по этим адресам мы можем добраться до реальных переменных a и b, которые мы действительно хотели бы обменять местами.
В функции swap в строке, например, *a = *a ^ *b , * означает, что мы берём значение переменной по её адресу.
2
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
09.12.2010, 15:18  [ТС] 10
спасибо, будет что гуглить, а то по запросу C++ ^* нечё путёвого нет)

Добавлено через 51 секунду
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    int a , b;
    cout<<"a = ";
    cin>>a;
    cout<<"b = ";
    cin>>b;
    cout<<"a = "<<a<<"\tb = "<<b<<endl;
    a = b ^ a;
    b = a ^ b;
    a = b ^ a;
    cout<<"a = "<<a<<"\tb = "<<b<<endl;
    system("pause");
    return 0;
}
может так проще будет для вас

да

знаки умножения - указатели, &а - разыменовать указатель(как по-человечески сказать, не помню, типа добраться до значения переменной, на которую указывает указатель)
- логическая операция "исключающее или"
"%d" стоит, чтоб сказать printf'у, чтобы он выводил целое число
примерно так
не, как раз с функцией очень даже хорошо-буду хоть какое-то представление иметь, а вот что значит endl?
0
Заблокирован
09.12.2010, 15:19 11
Цитата Сообщение от nonamez123 Посмотреть сообщение
а вот что значит endl?
перевод строки
насчет ^, лучше гуглить "xor c++", xor - это аналог(в vb, pas)
1
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
09.12.2010, 15:20 12
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
перевод строки
+ очищает буфер
1
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
09.12.2010, 15:24  [ТС] 13
какая разница между \n и endl? как я понял \n для использования в тексте, а endl за его пределами?

Добавлено через 25 секунд
Цитата Сообщение от asics Посмотреть сообщение
+ очищает буфер
теперь понятно)

Добавлено через 2 минуты
да, и ещё... какой вариант лучше использовать ? cin,cout или же scanf,printf ?
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
09.12.2010, 15:31 14
nonamez123, cin, cout - это С++
scanf,printf - это Си.
И не стоит об этом забывать.
0
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
09.12.2010, 15:37  [ТС] 15
Цитата Сообщение от asics Посмотреть сообщение
nonamez123, cin, cout - это С++
scanf,printf - это Си.
И не стоит об этом забывать.
если сидишь именно в c++ я имел в виду. Потому-что у нас вот к примеру в учебке начали с Turbo C++ Lite, но препод всё-равно использует printf,scanf.
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
09.12.2010, 15:39 16
nonamez123, Как по мне, то это полохой тон использовать сишные функции в С++.
1
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
10.12.2010, 11:44 17
Не люблю, когда смешивают языки. Поддержка сишных средств для работы с потоками оставлена в плюсах для совместимости с тоннами ранее написанного на Си кода, но не для того, чтобы смешивать языки, и наряду с, например, new/delete использовать printf/scanf.
0
easybudda
10.12.2010, 13:01
  #18

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
Поддержка сишных средств для работы с потоками оставлена в плюсах для совместимости с тоннами ранее написанного на Си кода, но не для того, чтобы смешивать языки
Вот представьте ситуацию: не знает человек ни С, ни С++, мало того - и знать не хочет. Но вот незадача, С++ - обязательный предмет в школе/институте/универе. Исключая варианты со взятками и (или) покупкой лабораторных/контрольных/что_у_них_там_ещё_бывает остаётся одно - учить худо/бедно. А препод не то, чтобы сам ничего не знает, скорее даже наоборот - точно знает, что и так заработает + считает себя выше всяких "мелких формальностей". Вот и учит студентов вместо заявленного С++ некоему гибридному языку почти собственного сочинения... Это Вы в курсе, что так не правильно, а студенту, которому лишь бы сдать зачёт/контрольную/экзамен, что printf(), что cout, что Console.WriteLine какое-нибудь - без особой разницы, он всё равно всё это через год как страшный сон забудет.

0
silent_1991
10.12.2010, 18:13     Обменять значение перменных
  #19

Не по теме:

easybudda, ну, я всего-лишь высказал своё мнение и аргументировал его. А вообще, хреновый это учитель, который не даёт своим ученикам самостоятельно что-то делать. Ведь он таким образом по большому счёту не учит ничему, а даёт установку делать так, а не иначе. Нас вот до сих пор никогда так не ограничивали, как хотите - так и пишите, главное, чтобы правильно.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2010, 18:13

Не передаются данные query с перменных
Всем привет, изучаю я вот такой php, и столкнулся значит с такой вот проблемой, делаю банальную...

Обменять значения переменной, имеющей наибольшее значение с переменной, имеющей наименьшее значение
Даны значения трех вещественных переменных a, b и c, отличные друг от друга. Обменять значения...

Сравнение перменных при Linq запросах из БД
Здраввствуйте, натыкаюсь на грабли преобразования типов при запросе к БД, когда нужно делать...

Деление перменных с отображением дробной части
Здравствуйте!Скажите пожалуйста, как поделить переменные, чтобы отобразилась дробная часть? То...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru