Вопросы ( и ответы) к зачету 112 гр, мехмат

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

 

#include <iostream>

 

using namespace std;

 

double Func_Min(double a,double b){//Объявляем вспомогательную функцию с двумя веществеными параметрами а и b

   double c;  //Объявялем вспомогательную переменую, которая будет хранить минивальное значение

   if(a<b) c= a; //Сравниваем а и b, присваиваем а переменой с, если а меньше b

   else c= b; //иначе присваиваем с значение b

   return c;  //Возвращаем вещественное значение

};

 

 int main(){

   double a,b;        //Объявляем переменные, которые будут сравниваться

   cin>>a>>b;         //вводим их

cout<<Func_Min(a,b); //обращаемся к функции Func_Min в выводе. Где после выполнения //вспомогательной функции                                         

   return 0;          //будет значение минимального из двух чисел

 }

 

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

 

#include <iostream>

#include <conio.h>

using namespace std;

 

void Func_Poryadok(int a,int b,int c){ //Объявляем вспомогательную функцию с тремя //целыми параметрами, не

//возвращающую значения (тип void)

int max,min,sr; //Объявялем вспомогательные переменные, которая будет хранить //мин, макс, среднее значения.

  if(a>b) {      //Сравниваем а с b. Если a>b значение a присваиваем переменной

        max=a;   //max, значение b переменной min.

        min=b;

  }     

  else {         //Если a<b значение b присваиваем переменой max,

        max=b;  //а значение а переменной min.

        min=a;

  }

  if(max<c){     //Если max < c то наш найденный ранее максимум есть среднее

        sr=max; //значение из трех. Максимальным значением становится с.

        max=c;

  };

if(min>c){     //Аналогично проверяем действительно ли найденный минимум //является минимальным.

sr=min;  //Т.е. если min < c значит ничего не меняем и наше значение //min есть минимальное из трех.

        min=c;

  }

  cout<<min<<' '<<sr<<' '<<max;

};

 

 int main(){

  int a,b,c;            //Объявляем переменные, которые будут сравниваться

  cin>>a>>b>>c;         //вводим их

Func_Poryadok(a,b,c); //Обращаемся к функции. Внимание! функция не возвращает //значения.

  getch();                                                   

  return 0;                                     

 }

 

 

3. С помощью цикла for вывести на экран числа 10, 12, 14, …, 20 в строчку через пробел.

 

#include <iostream>

#include <conio.h>

using namespace std;

 

 int main(){

for(int i=10;i<=20;i+=2) //В данном случае удобнее выводить значение параметра //i. Т.к. нужно вывести числа

cout<<i<<' '; //от 10 до 20, то начальным значением будет 10 а //конечным 20. изменение будет идти с шагом 2.

getch();              //после каждого вывода i пишем пробел, чтобы числа не //слиплись в одно число:)                        

  return 0;                                     

 }

 

 

4. С помощью цикла while вывести на экран числа 100, 95, 90, …, 5 в строчку через запятую.

 

#include <iostream>

#include <conio.h>

using namespace std;

 

int main(){ //Суть задачи состоит в том, что мы должны вывести равномерно убывающую //последовательность.

int a=100; //Это легко сделать с помощью одной переменой и ее изменения. //Объявляем и инициализируем а=100.

while(a>0){ //Пока а>0 выводим через запятую а, а затем уменьшаем а на 5. и так //пока а не станет 0.

        cout<<a<<',';

        a=a-5;

  };

  getch();                  

  return 0;                                

 }

 

5. С помощью цикла do while вывести на экран числа 113, 123, …, 193 в «столбик».

 

#include <iostream>

#include <conio.h>

using namespace std;

 

int main(){ //Данная задача практически полностью аналогична предыдущей. Разницу //заметите сами:)

  int a=113;                

  do{                

        cout<<a<<endl; //Оператор cout<<endl; - переводит на новую строку.

        a=a+10;

  } while(a<=193);

  getch();                  

  return 0;                                     

 }

 

 

6. С помощью цикла for и оператора continue вывести все четные числа от 2 до 52.

 

#include <iostream>

#include <conio.h>

using namespace std;

 

 int main(){              

for(int i=2;i<=52;i++){ //Сложность данной задачи заключается в знании того как      

                      // работает цикл с параметром и continue.

if(i%2==0)cout<<i<<' '; //Скажем так: сontinue схож оператору break, разница в //том, что второй заканчивает цикл, а первый просто //заканчивает итерацию.

else continue;     

  };

  Getch();

  return 0;                                     

 }

 

7. Вывести на экран:
5  5  5  5  5
5  5  5  5  5
5  5  5  5  5

 

#include <iostream>

#include <conio.h>

using namespace std;

 

 int main(){              

  for(int i=0;i<3;i++){

        for(int j=0;j<5;j++)

               cout<<5<<' ';      

cout<<endl; //Данная строка отделяет строчки друг от друга, чтобы они не //слепились в одну и относится к циклу с i.  

  };

  getch();

  return 0;                                     

 }

 

 

8. Вывести на экран:
1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2

7 7 7 7 7 7 7 7 7 7

 

#include <iostream>

#include <conio.h>

using namespace std;

 

 int main(){              

for(int i=1;i<=7;i++){    //Заметим, что цифры каждой строки это номер данной строки.

        for(int j=1;j<=10;j++) cout<<i<<' ';//Задача сводится к предыдущей.

        cout<<endl;

  };

  getch();

  return 0;                                     

 }

 

9. Вывести на экран:
1  2  3  4  5
1  2  3  4  5
1  2  3  4  5
1  2  3  4  5

 

#include <iostream>

#include <conio.h>

using namespace std;

 

 int main(){              

for(int i=1;i<=4;i++){ //Заметим, что строка из цифр это номера столбцов данной строки.

        for(int j=1;j<=5;j++) cout<<j<<' ';//Задача сводится к предыдущей.

        cout<<endl;

  };

  getch();

  return 0;                                     

 }

 

 

10. Вывести на экран:
5 6 7 8 9

5 6  7 8 9

5 6 7 8 9

5 6 7 8 9

5 6 7 8 9

 

 

#include <iostream>

#include <conio.h>

using namespace std;

 

 int main(){              

for(int i=1;i<=5;i++){ //Заметим, что строка из цифр это номер столбца+4.

        for(int j=1;j<=5;j++) cout<<j+4<<' ';//Задача сводится к предыдущей.

        cout<<endl;

  };

  getch();

  return 0;                                     

 }

 

 

11. Вывести на экран:
0
0 0
0 0 0
0 0 0 0
0 0 0 0 0

 

#include <iostream>

#include <conio.h>

using namespace std;

 

 int main(){              

for(int i=1;i<=5;i++){ //Заметим, что в строке количество 0 равно номеру //строки, получаем что

                          

        for(int j=1;j<=i;j++) cout<<0<<' ';//j пробегает от 1 до номера строки.

        cout<<endl;

  };

  getch();

  return 0;                                     

 }

 

 

12. Рассчитать n!

 

#include <iostream>

#include <conio.h>

using namespace std;

 

int main(){ //Вспомним, что факториал это произведение номера элемента на предыдущий //элемент. Первый и нулевой элемент равны 1.

int a=1,n; //Объявим а, которое будет хранить значение предыдущего элемента. И //по умолчанию =1. Т.е. если мы введем количество

cin>>n;  //элементов равное 0 или 1, то получим факториал 1, что истина. Далее //в цикле от 2 до n считаем факториал для

  for(int i=2;i<=n;i++) //каждого элемента.

        a=i*a;

  cout<<a;

  getch();

  return 0;                                     

 }

 

 

13. Рассчитать 1+2+3+ …+n.

 

#include <iostream>

#include <conio.h>

using namespace std;

 

int main(){ //данная задача аналогична предыдущей только разница в том, что мы не //умножаем номер элемента на пред., а складываем их

  int a=1,n;  

  cin>>n;            

  for(int i=2;i<=n;i++)  

        a=i+a;

  cout<<a;

  getch();

  return 0;                                     

 }

 

 

14. Рассчитать 3n.

 

#include <iostream>

#include <conio.h>

using namespace std;

 

int main(){ //данная задача аналогична предыдущей только разница в том, что мы умножаем //3 на предыдущий элемент

int a=1,n; //3 в степени n можно представить как последовательность 3*3*3*...*3- //n- раз

cin>>n;  //Т.е. используем цикл с параметром, а параметр i это как бы степень //в которую мы возвели 3.

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

        a=a*3;

  cout<<a;

  getch();

  return 0;                                     

 }

 

15. Объявить статический одномерный массив Data и инициализировать его числами 0,1,2,3,4.

 

#include <iostream>

using namespace std;

 

 int main(){

int Data[]={0,1,2,3,4}; //я хз че тут пояснять...все очевидно, надо просто //знать синтаксис      

  return 0;                                     

 }

 

 

16. Объявить статический двумерный массив из 12 строк и 15 столбцов.,

 

#include <iostream>

using namespace std;

 

 int main(){

int Data[12][15]; //эм....Ну в квадратных скобках указывается количество элементов..в данном случае сначала количество строк потом количество столбцов

      

  return 0;                                     

 }

 

 

17. Объявлен массив float b[12]. Заполнить его числами 1.5, 2.5, …, 10.5.

 

#include <iostream>

using namespace std;

 

 int main(){

  float b[12];

float a=1.5;          //ВНИМАНИЕ! В с++ целая часть од десятично отделяется           //точкой! а не запятой

for(int i=0;i<10;i++){ //Меня больше всего смущает что чисел 10, а элементов //массива 12...

        b[i]=a;

        a=a+1;

  }

  return 0;                                     

 }

 

 

18. Объявлен массив float b[12]. Выведите элементы массива на экран в строчку через пробел.

 

#include <iostream>

#include <conio.h>

using namespace std;

 

 int main(){

  float b[12];

for(int i=0;i<12;i++){ //введем значения, чтобы мы могли их вывести..

cin>>b[i];     //Просто если оставить как раньше то получится бред

for(int i=0;i<12;i++){    

cout<<b[i]<<' ';   

  }

  getch();

  return 0;                                     

 }

 

 

19. Объявлен массив float b[12]. Задать элементы массива значениями, введенными с клавиатуры.

 

 

#include <iostream>

using namespace std;

 

 int main(){

  float b[12];

for(int i=0;i<12;i++){ //Задача аналогична предыдущей. Только здесь мы вводим //элементы.                    

cin>>b[i];         

  }                         

  return 0;                                     

 }

 

20. Объявить динамический одномерный массив Mas_Din из n вещественных элементов.

 

#include <iostream>

using namespace std;

 

 int main(){

  int n; //n - количество элементов...Остальное без комментариев)

  cin>>n;

  float *Mas_Din=new float[n];

  return 0;                                     

 }

 

 

21. Удалить динамический одномерный массив Mas_Din из n вещественных элементов.

 

#include <iostream>

using namespace std;

 

 int main(){

  int n; //n - количество элементов...Остальное без комментариев)

  cin>>n;

  float *Mas_Din=new float[n];

  delete []Mas_Din; //удаляем массив Mas_Din...

  return 0;                                     

 }

 

22. Объявлен массив float b[12]. С помощью указателя float *p задать элементы массива значениями, введенными с клавиатуры.

 

#include <iostream>

using namespace std;

 

 int main(){

  float b[12]; //объявляем статический массив из 12 элементов

  float *p=&b[0]; //устанавливаем указатель на начало массива

  for(int i=0;i<12;i++){

cin>>*p++; //введенное значение сначала помещается в адрес указателя p,

//затем сдвиг указателя(т.е. перемещаемся к адресу след. //элемента).

  };

  return 0;                                     

 }

 

 

23. Объявлен массив float b[12]. С помощью указателя float *p вывести элементы массива на экран.

 

#include <iostream>

#include <conio.h>

using namespace std;

 

 int main(){   //задача аналогична предыдущей. Разница в операторе вывода.

  float b[12]; //объявляем статический массив из 12 элементов

  float *p=&b[0]; //устанавливаем указатель на начало массива

  for(int i=0;i<12;i++)//Сначала введем элементы массива

        cin>>*p++;

  *p=&b[0];      //Обнуляем значение указателя на начало массива.

  for(int i=0;i<12;i++){

cout>>*p++; //выводим значение помещенное в адрес указателя p,

//затем сдвиг указателя(т.е. перемещаемся к адресу след. //элемента). И та же проблема…Не понятно где брать элементы,

//которые будем выводить. Думаю надо уточнить на консультации.

//думаю лучше будет сначала ввести их. Что я и сделал в

//предыдущем цикле

  };

  getch();

  return 0;                                     

 }

 

24. Объявить динамический двумерный массив Mas_Din_2 из 5 строк и 7 столбцов. (выделить необходимую память)

 

#include <iostream>

using namespace std;

 

 int main(){

int n=5,m=7; //объявляем и инициализируем переменные, необходимые под размер

        // матрицы n x m

int **Mas_Din_2=new int*[n]; //Объявляем массив указателей на указатели из n

                             //элементов

for(int i=0;i<n;i++) Mas_Din_2[i]=new int[m]; //i-тому элементу присваиваем динамический одномерный массив из m элементов

  return 0;                                     

 }

 

 

25. Задать двумерный массив Маs_Din_2 (n строк, m столбцов) значениями с клавиатуры.

 

#include <iostream>

using namespace std;

 

 int main(){

  int n,m; //n x m -размер матрицы

  cin>>n>>m;

  int **Mas_Din_2=new int*[n]; //объявляем двумерный массив

  for(int i=0;i<n;i++){        //продолжение...

        Mas_Din_2[i]=new int[m];//продолжение...

        for(int j=0;j<m;j++)  //теперь в этом цикле задаем значения i-той строки.

               cin>>Mas_Din_2[i][j];

  };

  return 0;                                     

 }

 

 

26. Вывести на экран элементы массива Маs_Din_2 (n строк, m столбцов) в виде матрицы.

 

#include <iostream>

#include <conio.h>

using namespace std;

 

 int main(){

  int n,m; //n x m -размер матрицы

  cin>>n>>m;

  int **Mas_Din_2=new int*[n]; //объявляем двумерный массив

  for(int i=0;i<n;i++){        //продолжение...

        Mas_Din_2[i]=new int[m];//продолжение...

        for(int j=0;j<m;j++){//теперь в этом цикле выводим значения i-той строки.

               cin>>Mas_Din_2[i][j];

               cout<<Mas_Din_2[i][j];

        };

        cout<<endl; //Переходим на след. строку

  };

  getch();

  return 0;                                     

 }

 

 

27. Освободить память, выделенную под динамический массив Маs_Din_2 (n строк, m столбцов).

 

#include <iostream>

using namespace std;

 

 int main(){ //В этой задаче я предпологаю что массив сначала нужно объявить а потом уже удалять...Блин ппц сколько некорректных задач хД

  int n,m; //n x m -размер матрицы

  cin>>n>>m;

  int **Mas_Din_2=new int*[n]; //объявляем двумерный массив

  for(int i=0;i<n;i++)         //продолжение...

        Mas_Din_2[i]=new int[m];//продолжение...

  for(int i=0;i<n;i++) delete [] Mas_Din_2[i];

  delete [] Mas_Din_2;

  return 0;                                     

 }

 

 

28. Дан одномерный массив целых чисел a[10]. Удалить элемент с номером 4.

 

#include <iostream>

using namespace std;

 

 int main(){ //Меня уже бесят такие задачи...Ладно будем вводить элементы с клавы.

  int a[10];

  for(int i=0;i<10;i++) cin>>a[i]; //вводим элементы массива с помозью цикла

for(int i=4;i<9;i++)a[i]=a[i+1]; //начиная с 4-ого элемента присваиваем данному

// элементу значение следущего. и так до //предпоследнего элемента.

                      //последний не берем, т.к. мы выйдем за границу массива

  return 0;                                     

 }

 

 

29. Дан одномерный массив целых чисел a[10]. Вставить 0 после элемента с номером 4.

#include <iostream>

using namespace std;

 int main(){

 int n=10;

 int a[n];

 for(int i=0;i<n;i++) cin>>a[i];

 for(int i=n;i>5;i--) a[i]=a[i-1]; //выполняем сдвиг элементов массива

 a[5]=0; //элемент после 4 это 5, и именно ему мы присваиваем значение 0.

 n++; // увеличиваем размерность массива

for(int i=0;i<n;i++) cout<<a[i]<<" "; // вывод элементов

return 0;

}

30. Создать файловый входной поток. Связать его с файлом intput.txt, в котором записано некоторое количество целых чисел. Открыть. Считать из него все числа и вывести на экран.

 

#include <iostream>

#include <conio.h>

#include <fstream> //Библиотека для работы с потоками

 

using namespace std;

 

 int main(){

  ifstream in("input.txt"); // открываем поток in и связываем его с файлом input.txt

  int x;                       //Объявляем произвольную переменную.

while(in>>x)                 //Пока возможно читать из файла считываем в //переменную х

        cout<<x<<' ';         //выводим сразу же х

  getch();

  return 0;                                     

 }

 

 

31. Создать файловый выходной поток. Связать его с файлом output.txt. Записать в него числа 1, 2, …, 10.

 

#include <iostream>

#include <conio.h>

#include <fstream> //Библиотека для работы с потоками

 

using namespace std;

 

 int main(){

ofstream out("output.txt"); // открываем выходной поток out и связываем его с

                      // файлом output.txt

  for(int i=1;i<=10;i++)

        out<<i<<' ';   //выводим i в файл output.txt через поток out

  getch();

  return 0;                                     

 }

 

 

32. Написать функцию Print, выводящую на экран одномерный динамический массив, который она принимает в качестве параметра.

 

#include <iostream>

#include <conio.h>

 

using namespace std;

 

void Print(int *a,int n){ //Объявляем вспомогательную функцию Print которая не возвращает

                      // значения.

  for(int i=0;i<n;i++)  //В качестве параметра указатель на начало массива а, и

                      // количество элементов массива

        cout<<a[i]<<' '; //в цикле выводим элеметы массива.

};

 

 int main(){

  int n;

  cin>>n;

  int *a=new int[n]; //объявляем массив и в цикле вводим его значения

  for(int i=0;i<n;i++)

        cin>>a[i];

Print(a,n);    //Обращаемся к функции с массивом "а" в качестве параметра и //"n" - количество элементов

  getch();

  return 0;                                     

 }

 

 

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

 

#include <iostream>

using namespace std;

 

void Del(int **a,int n){ //Очевидно что функция не должна возвращать значение:)

  for(int i=0;i<n;i++)  //в цикле удаляем каждый столбец.

        delete [] a[i];

  delete [] a; //и наконец удаляем оставшуюся часть массива

};

 

 int main(){

  int n;

  cin>>n;

  int **a=new int*[n];  //Объявляем и инициализируем двумерный динамический массив

  for(int i=0;i<n;i++)

        a[i]=new int[n];

Del(a,n); //Обращаемся к функции с массивом "а" в качестве параметра и "n" - //количество элементов

  return 0;                                     

 }

 

 

34. Написать функцию Print_2, выводящую на экран двумерный динамический массив, который она принимает в качестве параметра.

 

#include <iostream>

#include <conio.h>

 

using namespace std;

 

void Print_2(int **a,int n){ //т.к. функция должна просто вывести массива, она будет типа

                       // void (не возвращающая значения)

  for(int i=0;i<n;i++){

        for(int j=0;j<n;j++)

               cout<<a[i][j]<<' '; //выводим элементы i-той строки

        cout<<endl;           //Переходим на новую строку

  };

};

 

 int main(){

  int n;

  cin>>n;

  int **a=new int*[n];  //Объявляем и инициализируем двумерный динамический массив

  for(int i=0;i<n;i++){

        a[i]=new int[n];

        for(int j=0;j<n;j++) //вводим элементы i-той строки

               cin>>a[i][j];

  };

Print_2(a,n);  //Обращаемся к функции с массивом "а" в качестве параметра и //"n" - количество элементов

  getch();

  return 0;                                     

 }

 



















Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: