Два Q. Это было на моем экзамене процедурного программирования, никто не ответил правильно

Кстати, это был письменный экзамен. Эти вопросы дали 4 балла каждый из возможных 100.

Вопрос 1:
Напишите небольшую программу, которая с помощью одного цикла while и оператора if выведет на экран следующее: [предупреждение: несколько чисел в строке или жесткое кодирование значений в переменные приведут к нулю точек]

1 4 9 16 25
1 4 9 16
1 4 9
1 4
1

Вопрос 2:
Ниже приведено уравнение для гармонического среднего. Напишите небольшую программу, которая может принимать значения массива и вычислять их среднее гармоническое значение.

x = n * (n сигма i = 1 (1 / xi))

У вас есть какие-нибудь ответы?

-6

Решение

Вопрос 1:

#include <iostream>

int main()
{
int i = 1;
int j = 5;
while(j > 0)
{
std::cout << i*i << " ";

if(i == j)
{
i = 1;
--j;
std::cout << "\n";
}else
{
++i;
}
}
}

Выход:

1 4 9 16 25
1 4 9 16
1 4 9
1 4
1

Достаточно хорошо?

Живой пример

3

Другие решения

Поскольку рекурсия не была запрещена, можно попробовать это:

#include <iostream>

void printLn(int i) {
int j = 0;
while(++j <= i)
std::cout << j*j<<" ";
std::cout << "\n";
if(i > 1)
printLn(i - 1);
}

int main() {
printLn(5);
}

Посмотрите, как это работает в: http://ideone.com/mrKUx0

Он использует рекурсию для печати отдельных строк и цикл while для печати каждого числа в строках. If используется для прерывания рекурсии по окончании.

Другой код очень прост:

#include <iostream>

const int ARRAY_SIZE = 5;

int main() {
float array[ARRAY_SIZE] = {1, 2, 3, 4, 5};
float sum = 0;
for(int i = 0; i < ARRAY_SIZE; ++i)
sum += 1 / array[i];
std::cout << "Harmonic Mean: " << ARRAY_SIZE / sum;
}

Снова вижу: http://ideone.com/GQJqQn

Обратите внимание, что среднее гармоническое определяется как n/Sum(...) не n * Sum(...)

1

По вопросам рекламы [email protected]