Задаци: Линеарне једначине и системи линеарних једначина¶
Алгоритми и програми у програмском језику C: Линеарне једначине и система линеарних једначина.
Oграда терасе¶
Прочитај текст задатка.
Нека је \(r\) непознато растојање између стубића. Тада \(n\) стубића покрива \(n\cdot{s} \ cm\). Између \(n\) стубића постоји \(n-1\) размак, један размак је између левог зида и првог стубића и један размак је између последњег стубића и десног зида. Дужина терасе у центиметрима је \(d\cdot{100}cm\). Дакле, важи услов
Решавањем ове једначине добија се да је растојање између стубића
До истог закључка смо могли доћи и мало неформалније. Укупно постоји \(n+1\) размак чију дужину треба израчунати. Зато за поделу на \(n+1\) део остаје \((d\cdot{100}-n\cdot{s}) \ cm\), чиме се добија исто решење као претходно.
Предложено решење задатка
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int n;
double d, s, r;
scanf("%lf%d%lf", &d, &n, &s);
r = (d * 100 - n * s) / (n + 1);
printf("%.2lf", r);
return 0;
}
Збирови по три странице правоугаоника¶
Прочитај текст задатка.
Обележимо странице правоугаоника са \(a\) и \(b\). Тада је обим правоугаоника \(2\cdot{a}+2\cdot{b}\), а површина је \(a\cdot{b}\). Ако je први збир три странице правоугаоника \(2\cdot{a}+b\) онда је збир друге три странице \(a+2\cdot{b}\). Тако добијамо две једначине \(2\cdot{a}+b=n\) и \(a+2\cdot{b}=m\) из којих можемо одредитии \(a\) и \(b\).
Један начин да се дође до решења је да се реши систем једначина неком од класичних метода решавања система једначина, чиме се добија да је \(a=\frac{2n-m}{3}\) и \(b=\frac{2m-n}{3}\), на основу чега се веома једноставно одређују обим и површина као \(O=2(a+b)\) и \(P=a\cdot{b}\).
Предложено решење задатка (1)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
double n, m;
scanf("%lf%lf", &n, &m);
double zbirStranica = (m + n) / 3;
double O = 2 * zbirStranica;
double a = m - zbirStranica;
double b = n - zbirStranica;
double P = a * b;
printf("%.2lf\n%.2lf", O, P);
return 0;
}
Просек на такмичењу¶
Прочитај текст задатка.
Просек свих ученика одређујемо као количник укупне суме поена свих ученика и броја ученика. Укупна сума поена свих ученика једнака је збиру суме поена свих ученика на првој страни и суме поена свих ученика на другој страни.
На првој страни има \(N-K\) ученика (разлика укупног броја ученика и броја ученика на другој страни). Ако поене ученика на првој страни обележимо са \(U_1,U_2,\ldots,U_{N-K}\) онда је
па је сума поена свих ученика на првој страни \(U_1+U_2+\ldots+U_{N - K}\) једнака \(p_1\cdot(N-K)\). Слично ако поене ученика на другој страни обележимо са \(U_{N-K+1},U_{N-K+2},\ldots,U_N\) онда је
па је сума поена свих ученика на другој страни \(U_{N-K+1}+U_{N-K+2}+\ldots+U_N\) једнака \(p_2\cdot{K}\). Дакле, укупан број поена једнак је \(p_1\cdot(N-K)+p_2\cdot{K}\), па просек свих ученика израчунавамо као количник
Предложено решење задатка (1)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int N, K;
double p1, p2;
scanf("%d%d%lf%lf", &N, &K, &p1, &p2);
double s1 = p1 * (N - K);
double s2 = p2 * K;
double prosek = (s1 + s2) / N;
printf("%.2lf", prosek);
return 0;
}