Перейти к содержанию

Программисты, помогите с С++


ScrewDriver2002

Рекомендуемые сообщения

Данила, ай нид хэлп.

В общем, ребята подскажите как в C++ подобных вещах сделать вот что - есть функция, нужно из нее вернуть 2,3,4... и тд параметров.

Вопрос - как это по человечески делается?  :D

постановка звездочек не дает желаемого результата, а может я неверно их поставил  :blush:

 

Сам ниразу не программист в нормальном понимании этого слова. Компилятор arduino, может кто знаком  :blush:

 

Выглядит функция вот так (нужно вернуть новые значения number и level, а по хорошему - перезаписать старые):

 

void menu(int key, int level, int number){

  static int key_old;
  if (key!=key_old and key==3) {number++;};
  if (key!=key_old and key==4) {number--;};
  if (key!=key_old and key==2) {level++;};
  if (key!=key_old and key==5) {level--;};
  key_old=key;
}

уже не надо, нашелся хороший человек, объяснил как у нормальных программистов адресацию косвенную сделать  :D

 

если кому интересно - вот так:

 

вызов функции: menu(key, &level, &number);

 

void menu(int key, int* level, int* number){
  static int key_old;
  if (key!=key_old and key==3) {(*number)++;};
  if (key!=key_old and key==4) {(*number)--;};
  if (key!=key_old and key==2) {(*level)++;};
  if (key!=key_old and key==5) {(*level)--;};
  key_old=key;

 

 

Ссылка на комментарий
Поделиться на другие сайты

Говнокод :(

 

В C++ нет AND

key!=key_old  надо вынести за скобки


Программисты посоветуйте, хочу купить  внеше жесткий диск, какой лучше?

Для женщин подойдут яркие цвета: зеленый, розовый, голубой

Ссылка на комментарий
Поделиться на другие сайты

Говнокод :(

 

В C++ нет AND

key!=key_old  надо вынести за скобки

 

говнокомментарий, вынос за скобки в используемом компиляторе даст ошибку, и AND тут есть. Читаем, прежде чем умничать.

И вообще, я не код просил комментировать, а помочь  :D

Ссылка на комментарий
Поделиться на другие сайты

говнокомментарий, вынос за скобки в используемом компиляторе даст ошибку, и AND тут есть. Читаем, прежде чем умничать.

И вообще, я не код просил комментировать, а помочь  :D

Так значит это не С++ и даже не си

 

Правильней так

 

void menu(int key, int* level, int* number){
  static int key_old = 0; // инициализировать надо иначе в релизе мусор
    if (key!=key_old)
  {
  if (key==3)(*number)++;
  if (key==4)(*number)--;
  if (key==2)(*level)++;
  if (key==5)(*level)--;
  key_old=key;

}

Ссылка на комментарий
Поделиться на другие сайты

З.Ы, вообще то в си++ есть такое понятие - ссылка. Праивльней и красивей вообще так 

 

void menu(int key, int& level, int& number){
  static int key_old = 0; // инициализировать надо иначе в релизе мусор
    if (key!=key_old)
  {
  if (key==3)number++;
  if (key==4)number--;
  if (key==2)level++;
  if (key==5)level--;
  key_old=key;

}

Ссылка на комментарий
Поделиться на другие сайты

Так значит это не С++ и даже не си

 

Правильней так

 

void menu(int key, int* level, int* number){
  static int key_old = 0; // инициализировать надо иначе в релизе мусор
    if (key!=key_old)
  {
  if (key==3)(*number)++;
  if (key==4)(*number)--;
  if (key==2)(*level)++;
  if (key==5)(*level)--;
  key_old=key;

}

 

тогда уж case поставить, в место кучи IF =)

З.Ы, вообще то в си++ есть такое понятие - ссылка. Праивльней и красивей вообще так 

 

void menu(int key, int& level, int& number){
  static int key_old = 0; // инициализировать надо иначе в релизе мусор
    if (key!=key_old)
  {
  if (key==3)number++;
  if (key==4)number--;
  if (key==2)level++;
  if (key==5)level--;
  key_old=key;

}

 

 

В чем разница между & и * в объявлении функции? как вызывать в твоем случае?

Ссылка на комментарий
Поделиться на другие сайты

Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу


×
×
  • Создать...