Шаблонная функция. Меняет местами значения переменных с помощью ссылок. c++ для начинающих. Дз#10

  Рет қаралды 77,184

#SimpleCode

#SimpleCode

7 жыл бұрын

Понравилось видео или оказалось полезным? Подпишись!
Шаблонная функция которая меняет местами значения переменных с помощью ссылок. c++. Дз#10
Исходный код topic-142292681_35578680
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit

Пікірлер: 202
@user-bq9rv4we4k
@user-bq9rv4we4k 4 жыл бұрын
Ёмаё.., я думал, что нужно так, что бы работало int с double, или наоборот, а тут вон оно как оказывается. Спасибо за урок!
@ivanivan5192
@ivanivan5192 5 жыл бұрын
Уроки просто супер! Большое спасибо! Не понятно почему в универе так не преподают, мы могли бы там чему-то научиться :)
@ShamaxGD
@ShamaxGD 2 жыл бұрын
Сам решил поиграться с типом string, всё сработало отлично. Библиотеку я не подключал.... Возможно это последняя ревизия языка просто, но в 2021 году работает и без подключения
@shaphrol9896
@shaphrol9896 Жыл бұрын
Ещё один рубеж пройден! Спасибо Сергей за лучший курс С++ в космосе!
@YehorBachurinDev
@YehorBachurinDev Жыл бұрын
а на земле?
@ivanliaz
@ivanliaz 4 ай бұрын
@@YehorBachurinDev Это как глобальная переменная. Если для космоса она есть, значит и для земли тоже. Ты не внимательно смотрел уроки Сергея.
@YehorBachurinDev
@YehorBachurinDev 4 ай бұрын
@@ivanliaz Відповісти на мій коментар, якому більше року - це геніальний ход
@user-np8nk9km8y
@user-np8nk9km8y 18 күн бұрын
@@ivanliaz глобалы хуебалы...
@polmesh2057
@polmesh2057 Жыл бұрын
Спасибо за огромную работу 😊
@SimpleCodeIT
@SimpleCodeIT 7 жыл бұрын
#ссылки #указатели #функции #SimpleCode #урокипрограммирования
@user-zl3hd2ru6k
@user-zl3hd2ru6k 6 жыл бұрын
Сергей, здравствуйте, а далее в уроках будет рассказываться, как ШАБЛОННАЯ функция может поменять РАЗНЫЕ типы данных (например int "a" c double "b", или int "a" с char "b")? Заранее спасибо за ответ и Огромное спасибо за ваши уроки
@iXNomad
@iXNomad 4 жыл бұрын
Ты забыл подчистить память за собой :( Как это делать? Или это работа компилятора?
@dist_raw4308
@dist_raw4308 4 жыл бұрын
@@iXNomad память на компухтере не закончится. Ранее Учитель говорил, что закончится, но закончится только вовремя выполнения. После окончания программы она сама счистится. Как я понял, это делает виндовс, либо же программа просто "снимает защиту" с данных, что дает виндовсу спокойно использовать ее в своих нуждах. Так сказать: int windows[10]{1,2,3,4,5,6,7,8,9,10}; windows[1012] = 5; Если ты понял, о чем я)
@user-ih8ov6uu6f
@user-ih8ov6uu6f 5 жыл бұрын
Я тоже не правильно понял вторую часть задания. И понял так, что нужно разные типы данных ввести в переменную a и b, а потом поменять их местами. С одним типом данных конечно изи.)
@hdfroggit3051
@hdfroggit3051 4 жыл бұрын
я сделал с двумя, просто 2 тайпнейм и все
@giovannigiorgio1536
@giovannigiorgio1536 3 жыл бұрын
@@hdfroggit3051 Не подменяются с двумя тайпнеймами
@hdfroggit3051
@hdfroggit3051 3 жыл бұрын
@@giovannigiorgio1536 у меня подменяются, нужно немного подумать как сделать и дописать немного лишнего текста
@giovannigiorgio1536
@giovannigiorgio1536 3 жыл бұрын
@@hdfroggit3051 Дружище, поделись секретом (кодом). Я чуть не рехнулся от этой задачи. Заранее дико благодарен.
@maslonidze
@maslonidze 3 жыл бұрын
@@hdfroggit3051 чел, это так то не возможно, ты о чём вообще. Думает он
@Arjuna114
@Arjuna114 5 жыл бұрын
Спасибо за занятия! Уровень от урока к уроку повышается у меня ) Сразу написал без особых проблем со string. Единственное версия программы с указателем у меня была написана без использования дополнительной переменной, и такой метод со string не пройдёт, пришлось код переписать с использованием дополнительной переменной.
@rdoskoch
@rdoskoch 7 жыл бұрын
Круто как всегда
@stensej6841
@stensej6841 4 жыл бұрын
на половину сделал ... Спасибо за разбор буду стрататься дальше ) Интересно много кого тут в 2020 ?)))
@user-gm3hq3he8o
@user-gm3hq3he8o 3 жыл бұрын
+1
@cr1stalofficial107
@cr1stalofficial107 3 жыл бұрын
2021
@primate472
@primate472 3 жыл бұрын
2021
@ne_izvesnuy6620
@ne_izvesnuy6620 3 жыл бұрын
2 половина 2021
@C2H5OHH
@C2H5OHH 2 жыл бұрын
2021!
@dmitrdmitr157
@dmitrdmitr157 3 жыл бұрын
Для тех, кто решит назвать свою функцию swap, столкнется с ошибкой и полезет в комментарии искать решение: назовите свою функцию иначе. Потому что функция swap- стандартная, ее не надо объявлять вне программы и можно использовать сразу в main.
@flamejoy7948
@flamejoy7948 2 жыл бұрын
спасибо!
@olegbocharnikov950
@olegbocharnikov950 2 жыл бұрын
@@flamejoy7948 всторенная swap с маленькими буквами а здесь первая буква заглавная специально своя
@heresjohnny8009
@heresjohnny8009 Жыл бұрын
У меня работает код нормально.
@Poloskun4ik
@Poloskun4ik Жыл бұрын
Swap != swap Первая это кастомная функция, вторая системная
@4ebyrashkalife
@4ebyrashkalife Жыл бұрын
чел ты гений
@sergeygreyse4171
@sergeygreyse4171 5 жыл бұрын
я сначала понял что нужно поменять местами int с double или char.
@BrownAleks
@BrownAleks 4 жыл бұрын
я тоже себе всю голову сломал. Как из одного типа в другой поместить. Но оказывается нужно было задание слушать внимательнее... )
@TheWladberlin
@TheWladberlin 4 жыл бұрын
Да, блин тоже. Но все-равно написал: template void Tausch(T1 &a, T2 &b) { T1 tmp = a; a = b; b = tmp; } Правда там потом с распечаткой "Problematisch" - char в формате ASCII выводит :))
@giovannigiorgio1536
@giovannigiorgio1536 3 жыл бұрын
@@TheWladberlin Это не будет работать
@l._.l7096
@l._.l7096 3 жыл бұрын
Я тоже так подумал)
@havemerc
@havemerc 3 жыл бұрын
@@giovannigiorgio1536 все работает, просто работает некорректно, по другому ты никак не сделаешь, то есть если ты решишь поменять значения чар и дабл, то у тебя значения поменяются, но при этом информация исказиться, потому что тип переменных которые были объявлены в мейне ты никак не поменяешь, это в теории нужно создавать какой-то алгоритм через if...else , где ты уже будешь объявлять новые переменные , при том статические, чтобы они жили уже после вызова функции и выводить на экран их значения, а не то что было объявлено изначально, короче по сути что-то такое сделать можно, но из того условия что было поставлено лучше ты навряд ли сделаешь
@nap0le0nb0naparte7
@nap0le0nb0naparte7 6 жыл бұрын
Сергей спасибо!!!
@naikvitlich1093
@naikvitlich1093 5 жыл бұрын
Кароче история такая начал сразу делать такую функцию, с возможностью ввода, про переменную string не знал и использовал char, и в консоле все работало только, можно было вводить один знак в один cin если, вводишь два знака, то второй считает за уже второй cin, потом пробовал глобальную переменные T1 и T2, я хотел передать в main но там ошибка в общем думал что я опять час тупил и посмотрел ролик и сразу понял что для чего string, теперь все прояснилось код работает с несколькими цифрами и знаками) Спасибо за уроки! #include #include using namespace std; template int changer(T1 &a,T2 &b) { T1 bb = b; b = a; a = bb; return 0; } int main() { setlocale(LC_ALL, "ru"); string a, b; ----- тут я использовал char) cout a; cout b; changer(a, b); cout
@user-qe7md6tb5l
@user-qe7md6tb5l 3 жыл бұрын
Для меня самое сложное было дз с генерацыей масива, а теперь любое дз за 5 минут делаю, вникаю, допольнительную литературу учу,но ваши уроки только и дают мне мотивацыю учить языки,все подробно,без воды, без понтов типо "я на этом бабки рублю " и все прочево.Вообщем,спасибо!
@dailyquote840
@dailyquote840 10 ай бұрын
как успехи?
@user-qe7md6tb5l
@user-qe7md6tb5l 10 ай бұрын
@@dailyquote840 после начала войны забросил, на стройке работаю в голандии, программирование в прошлом
@IT_Enthusiast
@IT_Enthusiast 6 жыл бұрын
Дякую! Більше завдань!
@Firuz26
@Firuz26 7 жыл бұрын
Спасибо
@sergeykiriuchuk7867
@sergeykiriuchuk7867 9 ай бұрын
да, спасибо большое за уроки!
@vitaliy2020
@vitaliy2020 4 жыл бұрын
В использовании строк есть плюс... они заранее выделяют необходимое количество памяти под разную длину (числа, буквы), поэтому обмен строкам происходит как обмен емкостями(допустим баками), которые хранят в себе ячейки с числами,буквами.
@panschindler9370
@panschindler9370 4 жыл бұрын
все по красоте))))
@user-ei4yc6uw3v
@user-ei4yc6uw3v 3 жыл бұрын
Замечательно!
@user-dq5zu1vg2o
@user-dq5zu1vg2o 2 жыл бұрын
Спасибо!🥰
@AA-un4so
@AA-un4so 10 ай бұрын
Спасибо!
@chelovechek7773
@chelovechek7773 2 ай бұрын
спасибо большое!
@user-bb1nk1po5e
@user-bb1nk1po5e Жыл бұрын
привет из 2023. Спасибо большое за уроки!
@infinity-w
@infinity-w Жыл бұрын
double и int поменять местами можно так, а вот с другими типами данных - там уже конвертации нужны, и всё сложно template void fun1(T1 &val1, T2 &val2){ string temp = T1 val1; val1= val2; val2 = temp; }
@AlannaRu
@AlannaRu Жыл бұрын
Пять минут работы, чтобы поправить прошлое домашнеее задание. Но это благодаря тому, что я внимательно смотрела предыдущие ролики))))
@user-ut7tj6bp4t
@user-ut7tj6bp4t 4 жыл бұрын
Удачи в развитии канала)))
@jangiryanarsen4952
@jangiryanarsen4952 6 жыл бұрын
Важно!!!! Для тех кто работает на Юниксах и Линуксах, он же Mac OS X(FreeBSD-яддро XNU). Подключите библиотеку (), чтобы выводило дробную часть числа 31(31.05). При компиляции на этих ОС, дробная часть числа 31 отбрасывается. Я компилировал на Mac OS X. На Windows 10 Pro(1709) Visual Studio 2017(все последние апдейты стоят), на это не обращает внимание, и выводит дробную часть без подключения библиотеки().
@user-kb6qd8rg4g
@user-kb6qd8rg4g 4 жыл бұрын
спасибо
@Avram_Vitalik
@Avram_Vitalik 3 жыл бұрын
настолько увлекла задача что пол дня убил. Гравное я не правильно понял условие. Написал код где то за минут 20. Но вот никак не могу чтобы функция меняла местами int переменную и double. Я хотел в 1 шаблонной функции сделать 2 разных переменных) T1 swap; swap = a; a= b; b=swap; выходит я в переменную "а" типа инт, пробую запихнуть переменную "b" типа double. Короче невнимательный))) Урок запомнил. Спс)))
@michaelovcharenko7646
@michaelovcharenko7646 6 жыл бұрын
задание изичное: сделал также, как и ты)) спасибо!
@user-jp8fr4lz4c
@user-jp8fr4lz4c 2 жыл бұрын
Написал это же задание и добавил в него ввод значений вручную пользователем. Выглядит это так -> using namespace std; template void foo(T &a, T &b, T &c) { T swap = a; a = b; b = c; c = swap; } void main() { int a, b, c; cout a; cin >> b; cin >> c; cout
@MIgusv
@MIgusv 3 жыл бұрын
Можно ли использовать setlocale (LC_ALL, " "); ???
@fnubee7135
@fnubee7135 Жыл бұрын
обратите внимание что функция типа string должна тоже возвращать string, например return "NULL"; в случае void такой проблемы нет
@user-td5mr8nv2u
@user-td5mr8nv2u 4 жыл бұрын
Вариант с определением для переменных в программе типа данных я также сделал. Решил через string) Можно вводить с клавиатуры и менять местами хоть "числа", хоть строки) НО! Как сделать так, чтобы при вводе с клавиатуры, программа работала с любым числом, и понимала его, как число? И аналогично со строкой. И меняла это все местами...
@vadimturok59
@vadimturok59 3 жыл бұрын
В самой реализации функции можно использовать встроенную функцию swap() которая автоматически меняет местами значения насколько я знаю или не так?
@medetkhanaltynbek1442
@medetkhanaltynbek1442 3 жыл бұрын
он об этом как раз говорил в уроке про указатели где-то
@tarasyashin
@tarasyashin 2 жыл бұрын
@@medetkhanaltynbek1442 при разборе предыдущего ДЗ говорил, что есть такая функция.
@Just_talk0023
@Just_talk0023 6 жыл бұрын
А если мы не знаем какой именно тип данных будет вводиться? И чтобы совсем усложнить. Если у нас две переменные разного и неопределенного типа?
@dmytroNaholiuk
@dmytroNaholiuk 5 жыл бұрын
шаблоны создавать
@Someone-ie6rd
@Someone-ie6rd 5 жыл бұрын
@@dmytroNaholiuk (К слову, если типы будут к примеру int и float, и значения 5 и 12.3, то в переменной данных int будет 12, так что просто шаблоны создавать не прокатит)
@user-bq9rv4we4k
@user-bq9rv4we4k 4 жыл бұрын
Тогда нужно использовать 3-ю переменную.Я так сделал сначала, а там оказывается нужно было сделать по другому, намного проще.
@user-bq9rv4we4k
@user-bq9rv4we4k 4 жыл бұрын
Неправильно понял вопрос.
@gigimondastor
@gigimondastor Жыл бұрын
В предыдущем уроке я прослушал часть про два одинаковых типа данных. Вот код: template void foo(T1 &a, T2 &b) { T1 c = a; a = b; b = c; } void main() { string a, b; cin >> a >> b; foo(a, b); cout
@fnubee7135
@fnubee7135 Жыл бұрын
в чём смысл делать T1 и T2 если оба они string? если же вы сделаете разные типы(для чего собственно и нужна такая запись), string не может свапнуться в int
@user-yd2wm6gt5k
@user-yd2wm6gt5k Жыл бұрын
@@fnubee7135 ты ж сам только что написал,что юзать шаблоны впринципе смысла не имеет.
@dimabaranov8167
@dimabaranov8167 9 ай бұрын
Если у параметров разные типы данных она тоже отработает?
@den1ssss
@den1ssss 6 жыл бұрын
А как сделать так, чтобы разные типы были у каждой переменной, где надо использовать Т1 и Т2? Я попробовал, но не вышло.
@ethermanmac6724
@ethermanmac6724 6 жыл бұрын
аналогично..
@timurortskhanov8527
@timurortskhanov8527 6 жыл бұрын
Денис походу ни как. Я тоже думал ДЗ именно из разных типов. Тоже час голову ломал и ничего не вышло.
@artyomkalnitckiy1648
@artyomkalnitckiy1648 6 жыл бұрын
template void VariableChange(T1 &a, T2 &b) { T1 temp; temp = a; a = b; b = temp; } и можете передавать хоть char и double
@LenTos1337
@LenTos1337 6 жыл бұрын
Ты не меняешь местами тип данных, ты просто можешь принимать разные типы данных, но поменять местами тут не предусмотрена возможность
@thomasanderson5434
@thomasanderson5434 6 жыл бұрын
не получается. У a и b разные типы, их нельзя друг другу присвоить корректно.
@xar901
@xar901 4 жыл бұрын
Я думал при помощи шаблонной функции можно передавать любые значения, при этом не вписывая их тип в функцию, поэтому не смог понять что не так, по началу думал что туплю и не мог запустить программу, отладчик постоянно ругался то на тип, то на функцию, потом понял что синтаксис в шаблонах более строгий чем в обычных функциях, обязательно нужно задавать и объявлять тип данных вне шаблона, в общем он ограничивает немного вариабельность написания кода. Без просмотра этого видео не понял бы как сделать шаблон, хотя замена переменных по ссылкам конечно не составляла труда. Я хотел сделать, чтобы можно было вводить любые значения в функцию и он бы менял их автоматически определяя тип сам, такое возможно ?
@wokroutArsentiy
@wokroutArsentiy 2 жыл бұрын
template void swapFoo(T &numberOne, T &numberTwo) { auto temp{ numberOne }; numberOne = numberTwo; numberTwo = temp; } auto сам определит тип переменной, основываясь на значении внутри {} ("auto temp{ numberOne }" то же, что и "auto temp = numberOne".)
@wokroutArsentiy
@wokroutArsentiy 11 ай бұрын
@n-factorial в каком месте лишние? Ты решил процедуру без скобок объявлять?
@wokroutArsentiy
@wokroutArsentiy 11 ай бұрын
​@n-factorial и каким образом они лишние? То что у человека есть привычка писать лишь одним единственным образом - его право. В данном случае это НЕ ошибка и НЕ лишнее. В спецификации, да и просто в интернете достаточно информации про разницу в присваивании различными методам. "{}, (), =". Советую так же изучить что пришло с новыми стандартами языка и начинать пользоваться ими. Чтобы писать на С++, а не Си с классами.
@Sooderone
@Sooderone 27 күн бұрын
🧠
@levmurflatazara9853
@levmurflatazara9853 3 жыл бұрын
Сделал дз за две минуты. Да я расту! (наверное)
@krouvy469
@krouvy469 4 жыл бұрын
Когда...я Крч, я не смог. Я подумал, что мы должны ввести два значения сами через cin>>a,b; И чтобы после функция сама определяла какие это переменным. Окей так можно, только если эти переменные intовые, то и возвращать она будет только int. Тут мне никакой шаблон не помог. Единственное к чему я пришел, это при объявлении переменных дать им тип string a,b; Это мое лучшее решение, функция будет менять местами и "привет" с "пока" и "5" с "7" и "2.2312" с "8.421" и "@" с "%", вот только на выходе все это будет в типе string, поэтому если я захочу после к примеру сложить 5 и 7, то получу 57(Ну с учетом предыдущей функции 47). Долго я думал и так и не придумал решения. Даже пытался шаблон T с функции main приписать, не получилось. Я даже пытался сделать операцию приведения типов cout
@jellyfish6042
@jellyfish6042 2 жыл бұрын
Та же ситуация
@vas_vol
@vas_vol 5 ай бұрын
А если менять переменньIе с разньIми типами даних? Строить логику?
@tobi4520
@tobi4520 2 жыл бұрын
сделал через перегрузку , забыл про тайп нейм , вот только интересно стало когда я хотел вводить данные a , b с клавиатуры , как мне ввести любой тип данных
@zumaxrussia
@zumaxrussia 5 жыл бұрын
сделал так #include using namespace std; template void Foo(T1 &a, T2 &b, T2 &temp) { temp = a; a = b; b = temp; } int main() { double a = 10, b = 4, temp; cout
@wokroutArsentiy
@wokroutArsentiy 2 жыл бұрын
Понимаю, что не актуально. Но новичкам поможет. Для чего создавать T1, T2, если у Вас переменные a && b одного типа? А так же для чего в main() хранить temp, если кроме как в функции она не используется.
@mpelsyoff
@mpelsyoff 5 жыл бұрын
#include #include #include #include // * Учусь программировать с++,указатели, 23.01.2019 * // * Домашнее задание ,программа меняющая значение переменных using namespace std; template void Foo2(T1 & k, T2 & z) { T1 a; a = k; k = z; z = a; } void main() { string k, z; cout > k; cout z; cout
@bat_bsvoriginal
@bat_bsvoriginal 4 жыл бұрын
зачем 2 разных типа Т?
@TheWladberlin
@TheWladberlin 4 жыл бұрын
Ты оба стринга берешь. Для этого тебе не надо 2 разных Т, не усложняй.
@Viamsupervadetvadens
@Viamsupervadetvadens 6 жыл бұрын
up
@user-pt2rb7wi7u
@user-pt2rb7wi7u 5 ай бұрын
А вот если такпя ситуация, если надо поменять местами две перменные а и б если они разных типов? Тоесть тут показано как их поменять если они оба одного типа , а допустим если а интовая , б дабловая ,то как это сделать?
@user-ft9ji9hg9x
@user-ft9ji9hg9x 4 жыл бұрын
Написала код, в итоге вылезло ucrtbased.pdb не загружен ( Подскажите, пожалуйста, где можно загрузить.
@user-qe7md6tb5l
@user-qe7md6tb5l 3 жыл бұрын
Просто купите новый комп
@F_YT_bring_back_nicknames
@F_YT_bring_back_nicknames 4 жыл бұрын
А если var записывать через cin(для любого типа), то как в main шаблон записать? Например: var1 = 2.5 var2 = "Привет"
@user-qe7md6tb5l
@user-qe7md6tb5l 3 жыл бұрын
Через два typename
@tarasyashin
@tarasyashin 2 жыл бұрын
@@user-qe7md6tb5l 2 тайпнейм ясно. Как в мейне реализовать cin 2 разных типов данных?
@steshapokosova1775
@steshapokosova1775 3 жыл бұрын
Вроде норм template void Foo(T &a, T &b) { T c = a; a = b; b = c; }
@shiru1414
@shiru1414 5 жыл бұрын
только для string, нужно еще библиотеку подключить
@MIgusv
@MIgusv 3 жыл бұрын
string уже кстати включён в iostream !!!
@3dalmaty785
@3dalmaty785 3 жыл бұрын
Точнее в using name std;
@alekseymagadan7175
@alekseymagadan7175 6 жыл бұрын
Окей, это было легко. А вот как например сделать по нормальному, чтобы меняло числа местами разных типов? А то у меня код извращенный по этому поводу получился.
@bat_bsvoriginal
@bat_bsvoriginal 4 жыл бұрын
как ты себе это представляешь? пихать стринг в дабл?
@user-wm5rx2pv6w
@user-wm5rx2pv6w 5 жыл бұрын
Сергей, я попытался создать еще одну шаблонную функцию, что бы пользователь самостоятельно вводил переменные, но возникают странные ошибки: не найдена соответствующая перегруженная функция не удается составить аргумент шаблон для "T" что это такое и как с этим бороться?(гугл не помогает)
@user-nv8hz7jl5s
@user-nv8hz7jl5s 5 жыл бұрын
Скиньте код в комментарии
@user-wm5rx2pv6w
@user-wm5rx2pv6w 5 жыл бұрын
​@@user-nv8hz7jl5s Так, забей, я понял свою ошибку))) что бы система опознала тип переменной, которую ввел пользователь( чар, инт, дабл, стринг) нужно приложить чуть больше усилий чем я ожидал) я сам займусь этой задачей - вопрос исчерпан, но за ответ спасибо)
@DivineRevelation69
@DivineRevelation69 6 ай бұрын
А я думал что функция с типом данных typename или class может и double и int ну и т.д... принимать одновременно. т.е например 'а' было бы интовой а 'b' дабловой.
@gcomsu5819
@gcomsu5819 4 жыл бұрын
Почти универсальная шаблонная функция с перегрузками. Меняет местами любые типы данных с использованием как ссылок, так и указателей, без использования в функции дополнительных переменных, для экономии памяти. /* "смена" местами значения переменных с помощью указателей и ссылок */ void UseSwap() { int A = 5, B = 6; cout
@TGrod
@TGrod 3 жыл бұрын
О. Вот это интересный способ менять местами) Правда только для цифр, но всё же
@bat_bsvoriginal
@bat_bsvoriginal 4 жыл бұрын
using namespace std; template void swap1(T &x, T &y) { T z = x; x = y; y = z; } int main() { float a = 2.7; float b = 5.3; cout
@neonbrickchannel2136
@neonbrickchannel2136 2 жыл бұрын
Я сделал так, что типы могут быть разными. Конечно при присваивании значения приводятся к соответствующему типу, но все равно.
@jija5121
@jija5121 7 ай бұрын
если первая переменная стринг,а вторая инт то как в инт можно передать стринг?это нужно как то менять в функции тип исходной переменной,а это вродь нельзя делать
@codingposture
@codingposture 3 жыл бұрын
Получился почти как у тебя
@giovannigiorgio1536
@giovannigiorgio1536 3 жыл бұрын
Ну чуваак! Я чуть квартиру не разнёс в ярости, пытаясь int подменить double`ом. Мат стоял на всю улицу, теперь горло село. Спасибо, конечно, огромное за офигенные уроки, но нельзя же так.
@okanid
@okanid 6 жыл бұрын
template t1 Swap(t1 &a, t2 &b) { t1 c = a; a = b; b = c; return 0; } void main() { setlocale(LC_ALL, "rus"); double a; double b; int repeat = 1; while (repeat == 1) { cout > a; cout > b; cout
@bogomolvalera7174
@bogomolvalera7174 3 жыл бұрын
Хотел сделать T1 T2 чтобы разные типы за раз можно было выводить, но подчеркивает функцию при вызове. хммм
@vadimgreen5352
@vadimgreen5352 3 жыл бұрын
Скинь код, посмотрим
@fill_v1
@fill_v1 3 жыл бұрын
template T foo( T1 &a,T2 &b) { swap (a,b); return a,b;}
@user-jz8xf6pr6w
@user-jz8xf6pr6w 3 жыл бұрын
Я думаю тут модна и так # include using namespace std; void foo(auto &aRef, auto &bRef) { auto q = aRef; aRef = bRef; bRef = q; } int main () { auto a, b; cin>>a>>b; cout
@Shiefavv
@Shiefavv 3 жыл бұрын
что такое auto?
@killersplintercell
@killersplintercell Жыл бұрын
А как модифицировать функцию так что бы она работала не с двумя одинаковыми параметрами, а с разными к примеру int и double?
@poetluchnik0v
@poetluchnik0v Жыл бұрын
Тот же вопрос. Автор схалтурил
@fakemail8713
@fakemail8713 6 ай бұрын
@@poetluchnik0v template < typename T1, typename T2> void functswap (T1 &aRef, T2 &bRef) { auto swap = aRef; aRef = bRef; bRef = swap; } int main() { string a, b; cin >> a >> b; cout
@poetluchnik0v
@poetluchnik0v 6 ай бұрын
@@fakemail8713 Спасибо
@Salvator701
@Salvator701 5 жыл бұрын
Сергей, а если такая ситуация : У меня две переменные int a = 5; double b = 7.14 Как мне ИХ поменять местами ведь даже если я пропишу второй typename и 2 параметра (T1 a, T2 b) ТО ВСЕ РАВНО a не будет равнятся 7.14 ИБО она типа Int и не может хранить дробные числа. Как сделать чтобы функция еще и подстраивалась и меняла тип данных на тот который нужно?
@hixac2105
@hixac2105 4 жыл бұрын
Надо один тип данных менять местами
@doctor_livsi_pod_phonk
@doctor_livsi_pod_phonk Жыл бұрын
попробуй взять 2 темпа
@user-wz2yt4ex5k
@user-wz2yt4ex5k 5 жыл бұрын
Вот такой вариант: /* TSwap.cpp Тестовая программа использует шаблонную функцию, параметры передаются "по ссылке" */ #include // стандартные функции ввода/вывода #include // дополнительные функции управления вводом/выводом using namespace std; // функция меняющая местами значения переменных // параметры передаются по ссылке с использованием // шаблона функции template void Swap(T &rA, T &rB) { rA = rA + rB; // в A сумма значений переменных rB = rA - rB; // в B значение A rA = rA - rB; // в A значение B } int main() { setlocale(LC_ALL, "Russian"); // для корректного отображения кириллицы в консоли // краткая информация о программе cout
@yellowmoonishka1725
@yellowmoonishka1725 Жыл бұрын
Ths
@Violator655
@Violator655 6 жыл бұрын
в кодеблокс не нужно подключать библиотеку стринга, чтобы стринги заработали. по-моему в студии этого тоже не нужно было делать.
@ivan_kirsanov
@ivan_kirsanov Жыл бұрын
А если передаются 2 переменные разного типа? Вот в чем вопрос. Если одна int, а вторая double - как обработать через шаблоны? Пробовал static_cast - не получилось
@zerotwoiloveu
@zerotwoiloveu Жыл бұрын
Автор объяснял в предыдущих уроках, если коротко то это делается так: template void Foo (T& a, T2& b) { Тут все также }
@ivan_kirsanov
@ivan_kirsanov Жыл бұрын
@@zerotwoiloveu не, вопрос в другом. Они то передаются, но Т и Т1 становятся передаваемыми типами и дабл в инт становится интом. Если ввести 3 и 4.4, то после замены выводит 4 и 3, а не 4.4 и 3. Вот в чем суть вопроса
@zerotwoiloveu
@zerotwoiloveu Жыл бұрын
@@ivan_kirsanovА при объявлении переменных, у них тип данных int был? Если так, нужно объявить одну как int, другую как double
@ivan_kirsanov
@ivan_kirsanov Жыл бұрын
@@zerotwoiloveu ну вот снова ж не то 😅. Задача ж какая? Поменять значения. Естественное, если переменная передаётся со значением 4.4, то она ж точно не инт.
@user-md7yf5bm8z
@user-md7yf5bm8z 3 жыл бұрын
никто случайно не знает, почему класс string (лично у меня) работает и без подключения библиотеки (компилятор g++)?
@Mayberry_
@Mayberry_ 2 жыл бұрын
более новая прога
@TenJIbIu
@TenJIbIu 3 жыл бұрын
Я это сделал) #include using namespace std; template void Fync(T &a, T &b) { T c; c = a; a = b; b = c; } void main() { int a = 0, b = 4; cout
@leda9518
@leda9518 3 жыл бұрын
Я через template сделал
@_Ca5tor_
@_Ca5tor_ 5 жыл бұрын
Я постарался выполнить задание вот так!) В консоли можно самим выбрать тип данных 1 из 4 (int,double,char,string(только латиница)) #include #include using namespace std; template void Fun(T1 &a, T2 &b, T2 &c)//реализация шаблона(заменяет перезагрузку) позволяет работать с любым типом данных (int,double и т.д.) { c = a; a = b; b = c; } void main() { setlocale(LC_ALL, "ru"); cout
@sergeygreyse4171
@sergeygreyse4171 5 жыл бұрын
3 ошибки со старта
@user-jp8fr4lz4c
@user-jp8fr4lz4c 2 жыл бұрын
@@sergeygreyse4171 фальш старт
@sergeygreyse4171
@sergeygreyse4171 2 жыл бұрын
@@user-jp8fr4lz4c именно)
@user-jp8fr4lz4c
@user-jp8fr4lz4c 2 жыл бұрын
@@sergeygreyse4171 Стали ли вы программистом спустя 3 года ?
@sergeygreyse4171
@sergeygreyse4171 2 жыл бұрын
@@user-jp8fr4lz4c нет, частично обстоятельства, частично - сам виноват,
@Shiefavv
@Shiefavv 3 жыл бұрын
Я, блин, поставил два typename'а Т1 и Т2 и сижу не догоняю почему не работает... Вы бы видели мое лицо, после разбора дз.
@jellyfish6042
@jellyfish6042 2 жыл бұрын
Друг, как я тебя понимаю ахахаххаха. У меня серое вещество кипело просто, я был похож на доисторический чугунный чайник...
@jellyfish6042
@jellyfish6042 2 жыл бұрын
И я так понимаю, что все же наша с тобой ошибка потому, что невозможно такую шаблонку создать типа?
@user-my1cm8mu2v
@user-my1cm8mu2v 6 жыл бұрын
void reb(double &a,double &b) { double temp = a; a = b; b = temp; } template T2 Shablon(T2 &a, T1 &b) { return 0; } void main() { setlocale(LC_ALL, "ru"); double a; double b; cin >> a; cin >> b; cout
@Matissed
@Matissed 4 жыл бұрын
В чем тогда смысл указателей, если есть ссылки и они выполняют такую же роль?
@user-qs8vf5dm3c
@user-qs8vf5dm3c 3 жыл бұрын
Указатели гораздо старше ссылок. Они унаследовались из С.
@Mayberry_
@Mayberry_ 2 жыл бұрын
указателям ты можешь менять место выделенное под переменную
@bleeding333
@bleeding333 Жыл бұрын
Не совсем понятно, как менять местами два разных типа данных, скажем непонятно как поменять местами double a и string b.
@infinity-w
@infinity-w Жыл бұрын
менять местами double a и string можно только если преобразовывать тип double в string. Там намного всё сложнее.
@high-level-content-maker
@high-level-content-maker 2 жыл бұрын
Я целый день ебался с этими шаблонными функциями, читал столько книг и статей, чтобы моя программа могла менять int с double, или double c string, а оказывается... а оказывается вот что... А возможно ли создать с помощью с++ такую программу?
@constnoir
@constnoir 7 ай бұрын
a += b; b = a - b; a -= b; (извините)
@Xlolka-bj4xz
@Xlolka-bj4xz Ай бұрын
реально я потратил время что как как-то присвоить типу инт тип стринг
@user-rd1hb8uf9b
@user-rd1hb8uf9b 7 жыл бұрын
// Arduino Поменять местами значение двух переменных, любых типов данных::: // auto a = 1; auto b = 2; // auto a = 111.11; auto b = 222.22; // auto a = 'a'; auto b = 'b'; auto a = "aaaaaaaaaaaaaaaa"; auto b = "bbbbbbbbbbbbbbbb"; void foo(auto &a, auto &b) { auto i = a; a = b; b = i; } void setup() { Serial.begin(57600); Serial.println(a); Serial.println(b); foo(a, b); Serial.println(a); Serial.println(b); } void loop() {} //
@educat3422
@educat3422 6 жыл бұрын
не правильный комент. Где самый и тд...))
@vitaliy2020
@vitaliy2020 4 жыл бұрын
Были вопросы об обмене значениями с разными типами данных. Это корректно реализовывать через строки , которые не проходили. Шаблоны ни к чему. void SWAP(string &s1,string &s2) { swap(s1, s2); } int main() { string s1, s2; cin >> s1 >> s2; SWAP(s1, s2); cout
@serzhant7169
@serzhant7169 4 жыл бұрын
всмысл шаблоны ни к чему а если я захочу использовать свап для инта или дабла или вообще для своего типа данный мне придётся кажды раз писать новую функцию? думай что говоришь
@vitaliy2020
@vitaliy2020 4 жыл бұрын
@@serzhant7169 зачем писать каждый раз новую функцию? если строка принимает и символы и цифры, другой вопрос оперировать со значениями ... но тут такой задачи и не стояло... вопрос был лишь в том как поменять значения местами
@vitaliy2020
@vitaliy2020 4 жыл бұрын
как раз с шаблонами надо будет переписывать их , если захочешь вдруг изменить тип данных
@serzhant7169
@serzhant7169 4 жыл бұрын
@@vitaliy2020 ты издеваешься? Шаблон один раз написал и используй сколько хочешь с любыми типами, что ты переписывать собрался в шаблоне?
@serzhant7169
@serzhant7169 4 жыл бұрын
"Были вопросы об обмене значениями с разными типами данных." таких вопросов не было! Задача было об обмене местами двух значений одинаковых типов, и чтобы функция работала с любыми значениями
MEU IRMÃO FICOU FAMOSO
00:52
Matheus Kriwat
Рет қаралды 45 МЛН
아이스크림으로 체감되는 요즘 물가
00:16
진영민yeongmin
Рет қаралды 4,9 МЛН
Пробую самое сладкое вещество во Вселенной
00:41
Задача из Собеседования на 160,000 Евро в Год
13:27
Саша Лукин
Рет қаралды 1,1 МЛН
Зачем нужны указатели в C++?
8:14
Dima
Рет қаралды 2,2 М.
C++ Разработчик учит Python
28:01
Winderton
Рет қаралды 495 М.
100+ Linux Things you Need to Know
12:23
Fireship
Рет қаралды 108 М.
MEU IRMÃO FICOU FAMOSO
00:52
Matheus Kriwat
Рет қаралды 45 МЛН