4 / 4 / 0
Регистрация: 09.04.2012
Сообщений: 44
Записей в блоге: 1
1

Функция, которая получает по ссылке две переменные

13.04.2012, 21:48. Показов 3116. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1.Разработать функцию, которая получает по ссылке две переменные А и В (любого типа данных) и обрабатывает их в соответствии с некоторым правилом, например, если А больше В, то меняет их значения местами.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2012, 21:48
Ответы с готовыми решениями:

Написать процедуру, которая получает две вещественные переменные
Написать процедуру, которая получает две вещественные переменные и возвращает вместо каждой из...

Напишите функцию, которая получает две переменные целого типа
9. Напишите функцию, которая получает две переменные целого типа: A и B. Если их значения не равны,...

Напишите функцию, которая получает две переменные целого типа: A и B
Напишите функцию, которая получает две переменные целого типа: A и B. Если их значения не равны, то...

Напишите функцию, которая получает две переменные целого типа: A и B
Напишите функцию, которая получает две переменные целого типа: A и B. Если их значения не...

10
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
13.04.2012, 22:28 2
Цитата Сообщение от dim1993 Посмотреть сообщение
Разработать функцию, которая будет получать указатель на строку символов и возвращать длину строки в байтах.
C++
1
2
3
4
5
6
7
int str_len(char *ch)
{
  int len = 0;
  while(ch[len] != '\0')
    len++;
  return len;
}
2
4 / 4 / 0
Регистрация: 09.04.2012
Сообщений: 44
Записей в блоге: 1
13.04.2012, 22:55  [ТС] 3
а можно немного поподробней,просто я новичок.не совсем все понятно.
0
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
13.04.2012, 23:15 4
Строки в C++ заканчиваются нулевым символом - '\0'.
Строки это массивы char поэтому доступ к отдельным символам - ch[0], ch[1]...
C++
1
2
3
4
5
6
7
int str_len(char *ch)
{
  int len = 0;
  while(ch[len] != '\0') // пока символ не '\0'
    len++; // len = len + 1 - прибавляем единицу и движемся по массиву - ch[len]
  return len; // возвращаем len 
}
1
4 / 4 / 0
Регистрация: 09.04.2012
Сообщений: 44
Записей в блоге: 1
13.04.2012, 23:49  [ТС] 5
помогите,пожалуйста ещё и с первым заданием.
0
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
14.04.2012, 00:35 6
Цитата Сообщение от dim1993 Посмотреть сообщение
Разработать функцию, которая получает по ссылке две переменные А и В
Не совсем понятно. Может указатель?

Добавлено через 11 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
void fun(int *m)
{
  int A = m[0];
  int B = m[1];
  int tmp;
  if(A > B)
    {
      tmp = m[0];
      m[0] = m[1];
      m[1] = tmp;
    }
}
1
26 / 26 / 3
Регистрация: 13.04.2012
Сообщений: 61
14.04.2012, 01:56 7
На счет первого, я думаю, что надо так
C++
1
void fun(int &A, int &B);
но меня смущает, что там требуют любой тип, тут уже шаблоны нужны.

Добавлено через 22 минуты
C++
1
2
3
4
5
6
7
8
9
10
template< typename T > 
void fun(T &A, T &B)
{
    T tmp = A;
    if(A > B)
    {
        A = B;
        B = tmp;
    }    
}
Вызов с разными типами:
C++
1
2
3
4
5
6
7
char cA = 5;
char cB = 3;
fun(cA, cB);
 
int iA = 6;
int iB = 4;
fun(iA, iB);
1
4 / 4 / 0
Регистрация: 09.04.2012
Сообщений: 44
Записей в блоге: 1
14.04.2012, 11:15  [ТС] 8
Разработать функцию, которая получает по ссылке две переменные А и В (любого типа данных) и обрабатывает их в соответствии с некоторым правилом, например, если А больше В, то меняет их значения местами.

А если мне к этой программе необходимо добавить в форму поля для ввода значений переменных, кнопку для вызова обработчика, в котором с помощью разработанной функции будут обрабатываться значения переменных, а также будут выводиться в поля формы новые значения переменных.

То как будет выглядеть код?
0
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
14.04.2012, 20:29 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
void fun(int &A, int &B)
{
  int tmp = A;
  if(A > B)
    {
      A = B;
      B = tmp;
    }
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int a = Edit1->Text.ToInt();
  int b = Edit2->Text.ToInt();
  fun(a, b);
  Edit1->Text = IntToStr(a);
  Edit2->Text = IntToStr(b);
}
//---------------------------------------------------------------------------
2
4 / 4 / 0
Регистрация: 09.04.2012
Сообщений: 44
Записей в блоге: 1
15.04.2012, 09:50  [ТС] 10
Sergey-K не могли бы вы объяснить что делаете в каждом пункте.просто новичок и не все понятно.заранее спасибо.
0
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
15.04.2012, 14:13 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
void fun(int &A, int &B) /* функция, объявляем ссылки на тип int,
  при вызове функции они инициализируются,
  с ними можно работать как с обычными переменными типа int */
{
  int tmp = A; // объявляем временную переменную типа int для хранения значения A
  if(A > B) // если A больше B
    {
      A = B; // присваиваем A значение B
      B = tmp; // присваеваем B значение tmp. В tmp хранилось значение A, оно присваивается B
    }
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int a = Edit1->Text.ToInt(); /* объявляем переменную a типа int
    и инициализируем ее значением введенным в Edit1.
    Свойство Edit1->Text имеет тип AnsiString, преобрезуем его в int (.ToInt()) */
  int b = Edit2->Text.ToInt(); // объявляем переменную b типа int и делаем аналогично a
  fun(a, b); // вызов функции
  Edit1->Text = IntToStr(a); // вывод a, преобрезуем int в AnsiString (IntToStr())
  Edit2->Text = IntToStr(b); // вывод b, преобрезуем int в AnsiString
}
//---------------------------------------------------------------------------
1
15.04.2012, 14:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2012, 14:13
Помогаю со студенческими работами здесь

Напишите функцию, которая получает три переменные вещественного типа
11. Напишите функцию, которая получает три переменные вещественного типа с разными значениями: A,...

. Напишите функцию, которая получает три переменные вещественного типа
10. Напишите функцию, которая получает три переменные вещественного типа с разными значениями: A,...

Функция, которая получает в качестве параметров два целых числа и возвращает сумму
Написать функцию, которая получает в качестве параметров два целых числа и возвращает сумму чисел...

Написать функцию, которая получает значение типа float и возвращает две строки: одна представляет вещественное число в обычном виде ,а другая
Написать функцию, которая получает значение типа float и возвращает две строки: одна представляет...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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