Задаци: Генерисање неких правилних серија¶
Алгоритми и програми у програмском језику C: генерисање неких правилних серија.
Серије 123¶
Прочитај текст задатка.
Прво је потребно исписати један број 1, затим два броја 2, затим три броја 3 и на крају \(n\) бројева \(n\). Дакле, за сваку вредност променљиве \(i\) од 1 до \(n\), потребно је \(i\) пута исписати вредност променљиве \(i\). Пошто се исписивање броја \(i\) \(i\) пута може реализовати уз помоћ петље у којој променљива \(j\) узима редом вредности од \(1\) до \(i\), а у чијем се телу налази наредба за испис броја \(i\), задатак се може решити угнежђеним петљама. Ако је \(n\) учитана вредност, спољашњом петљом у којој променљива \(i\) узима редом вредности од \(1\) до \(n\) се обезбеђује \(n\) понављања унутрашње петље у којој се променљива спољашње петље \(i\) исписује \(i\) пута.
Предложено решење задатка
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= i; j++)
printf("%d ", i);
return 0;
}
Таблица множења¶
Прочитај текст задатка.
Све комбинације чинилаца се могу добити помоћу две угнежђене петље. У спољној петљи мења се први чинилац од \(1\) до \(m\), а у унутрашњој други чинилац од \(1\) до \(n\). У телу унутрашње петље знају се вредности оба чиниоца \(i\) и \(j\) и тада се може израчунати и њихов производ \(i\cdot j\) и форматирати испис. Прелазак у нови ред се врши на крају тела спољашње петље.
Предложено решење задатка
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int m, n;
scanf("%d%d", &m, &n);
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
printf("%d * %d = %d\t", i, j, i * j);
printf("\n");
}
return 0;
}
Серије непарни парни¶
Прочитај текст задатка.
Тражене бројеве можемо поделити на мање серије: прво долази серија која садржи један непаран број (1), затим серија која садржи два парна броја (2, 4), затим серија која садржи три непарна броја (5, 7, 9) и тако даље. Ако је \(n\) учитана вредност, потребно је исписати \(n\) серија и спољашњом петљом чија се променљива \(i\) креће од 1 до \(n\) обезбеђујемо \(n\) понављања унутрашње петље, која исписује појединачне серије. Пошто \(i\)-та серија садржи \(i\) елемената, тело унутрашње петље се понавља \(i\) пута. Ако претпоставимо да променљива \(q\) садржи вредност почетног елемента текуће серије (што ће за прву серију бити тачно ако вредност променљиве \(q\) иницијализујемо на 1, пре спољашње петље), онда њену вредност можемо исписивати у сваком кораку унутрашње петље, увећавајући је након тога за 2 (што може бити учињено било у телу унутрашње петље, било у њеном кораку). Приметимо да ће након завршетка исписа серије променљива \(q\) бити за два већа од њеног последњег елемента, што је за један више од првог елемента наредне серије, тако да је као последњи корак тела спољашње петље потребно умањити њену вредност за 1.
Предложено решење задатка (1)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int n, q = 1;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++, q += 2)
printf("%d ", q);
printf("\n");
q--;
}
return 0;
}