Лабораторная работа №18 "Составление программ с использованием функций, передающих значения через глобальные переменные"

Задачи


Вариант А1

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

Спойлер
// Вариант 1
#include <stdio.h>
#include <math.h>
float p, s;
void psp(float a, float b, float c) {
  float pp;
  pp = (a + b + c) / 2;
  p = a + b + c;
  s = sqrt(pp * (pp - a) * (pp - b) * (pp - c));
}
int main() {
  float a, b, c;
  scanf("%f%f%f", &a, &b, &c);
  psp(a, b, c);
  printf("%.3f %.3f", s, p);
}

Вариант А2

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

Спойлер
// Вариант 2
#include <stdio.h>
int i, n;
float *a, x = 0, y = 0;
void f() {
  for (i = 0; i < n; i++) {
    x = x + a[i];
  }
  y = x / n;
}
int main() {
  scanf("%i", &n);
  a = new float[n];
  for (i = 0; i < n; i++) {
    scanf("%f", &a[i]);
  }
  f();
  printf("%f %f", x, y);
  delete[] a;
}

Вариант А4

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

Спойлер
// Вариант 4
#include <stdio.h>
float pl, mn;
void f(float a, float b) {
  pl = a + b;
  mn = a - b;
}
int main() {
  float a, b;
  scanf("%f%f", &a, &b);
  f(a, b);
  printf("%.3f\n%.3f", pl, mn);
}

Вариант А5

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

Спойлер
// Вариант 5
#include <stdio.h>
#include <math.h>
float s, r;
void f(float a, float b) {
  s = pow(a, b);
  r = pow(b, a);
}

int main() {
  float x, y;
  scanf("%f%f", &x, &y);
  f(x, y);
  printf("%f\n%f", s, r);
}

Вариант А6

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

Спойлер
// Вариант 6
#include <stdio.h>
float g, d;
void skidka(float a, float b) {
  g = a / 100 * b;
  d = a - g;
}
int main() {
  float a, b;
  scanf("%f%f", &a, &b);
  skidka(a, b);
  printf("%f %f", d, g);
}

Вариант А7

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

Спойлер
// Вариант 7
#include <stdio.h>
float p, r;
void Func(float i, float u) {
  p = i * u;
  r = u / i;
}
int main() {
  float A, V;
  scanf("%f%f", &A, &V);
  Func(A, V);
  printf("%.3f %.3f", p, r);
}