Функции. Механизм передачи параметров

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

#include <iostream>

#include <fstream>

using namespace std;

ofstream f;

void vyvod(int n) //данные передаются по значению

{

       int k;

       while (n!=0)

       {

               k=n%10;

               f<<k; 

               n=n/10;

               if (n!=0) f<<",";

       }

       f<<endl;

}

int main ()

{

int x, i,n;

f. open("a. txt",ios::out);

cin>>n;

for (i=1;i<=n;i++)

{

cin>>x;

vyvod(x);

}

f. close();

system ("pause");

return 0;

}

Пример 2. Найти наибольший общий делитель (НОД) для значений x, y, x+y.

Идея решения состоит в следующем математическом факте: если х, у, z — три натуральных числа, то НОД(х, у, z) = НОД(НОД(х, у), z) – иначе говоря, нужно найти НОД двух величин, а затем НОД полученного значения и третьего числа.

#include <iostream>

using namespace std;

int evklid(int m, int n) //данные передаются по значению

{

       while (m!=n)

               if (m>n) m=m-n;

               else n=n-m;

НЕ нашли? Не то? Что вы ищете?

return (m);

}

int main ()

{

int x, y,nod;

cin>>x>>y;

nod=evklid(evklid(x, y),x+y);

cout<<"NOD="<<nod<<"\n";

system ("pause");

return 0;

}

Пример 3. Что будет выведено в результате выполнения программы?

#include <iostream>

#include <iomanip>

using namespace std;

void One(int x, int y, int& z)

{

  x=y+2;

  y=z*3;

  z=5;

  cout<<x<<y<<z<<endl;

}        

void Two(int x, int& z, int& y)

{

  x=y+z; y=y+10;

  cout<<x<<y<<z<<endl;

}

void main()

{

int a=1, b=2,c=3;

  Two(b, a,c);

  cout<<b<<a<<c<<endl;

  One(a, b,c);

  cout<<a<<b<<c<<endl;

  }

Решение








в функции main

в функции Two

в функции One

команды

a

b

C

x

z

y

x

y

z

1

2

3

a=1; b=2; c=3;

1

2

3

2

Two(b, a,c)

4

X=y+z

13

Y=y+10

cout<<x<<y<<z

{выводим  4  13  1}

cout<<b<<a<<c

{выводим  2  1  13}

1

2

13

1

2

Оne(a, b,c)

4

x=y+2

39

y:=z*3

5

z:=5

cout<<x<<y<<z

{выводим  4  39  5}

cout<<a<<b<<c

{выводим  1  2  5}

Ответ:

4 13 1

2 1 13        

4 39 5

1 2 5