Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

C++

C++

Мнениеот Гост » 06 Яну 2019, 13:19

1.Да се напише функция на C++, която приема като параметър едномерен масив от дробни числа и връща като резултат сумата на елементите му с нечетни индекси. Функцията да не извиква други функции. Да се напише програма, която извиква написаната функция върху три масива от дробни числа (с едно число, с три числа и един избран от вас) и извежда на екрана резултатите за всеки от тях.

2.Да се напише void функция на C++, която приема като параметър цяло положително число и го преобразува в средното аритметично на цифрите му (закръглено надолу). Функцията да не извиква други функции. Да се напише програма, която извиква написаната функция върху три цели числа (едноцифрено, двуцифрено и избрано от вас) и извежда на екрана резултатите за всяко от тях.
Гост
 

Re: C++

Мнениеот Davids » 07 Яну 2019, 00:38

По първата задача кодът. Честно, бях забравил каква болка е писането на C++ и цялата му синтактична философия с пойнтърите и референциите :D Но след няколко справки с позабравените прашасали скрижали стигнахме до заветната функционалност, де...
Код: Избери целия код
#include "stdafx.h"
#include <iostream>

template <std::size_t n> //initialize a template parameter of type size_t in order to obtain the array's size
double sum(const double(&numbers)[n])
{
   double s = 0;

   for (int i = 1; i < n; i += 2)
   {
      s += numbers[i];
   }

   return s;
}

int main()
{
   double firstArray[] = {1};
   std::cout << sum(firstArray) << std::endl;
   double secondArray[] = {1, 2, 3};
   std::cout << sum(secondArray) << std::endl;
   double thirdArray[] = { 1, 2, 3, 5, 6, 7};
   std::cout << sum(thirdArray) << std::endl;
    return 0;
}


И втората задачка:
Код: Избери целия код
#include "stdafx.h"
#include <iostream>

void PrintAverageOfDigits(int number)
{
   int s = 0, n = 0;

   do
   {
      s += number % 10;
      n++;
   }
   while (number /= 10);

   std::cout << s/n << std::endl; //rounded to lower, so any decimal part of the fraction will be ignored - only the whole part gets displayed
}

int main()
{
   PrintAverageOfDigits(5);
   PrintAverageOfDigits(16);
   PrintAverageOfDigits(1238172389123);
    return 0;
}

Надявам се, като поразглеждаш така готовите задачи да успяваш да си ги обясниш :D За въпроси сме отворени, макар и предимно в ролята на свръзка с правилния сърч в гугъл... така че може и направо натам да се обръщаш :D
*Нещо непосредствено и интересно, привличащо вниманието на читателя и оставящо го с приятна топла усмивка на лицето.*
----
Вече не го правя само за точката. :lol:
Davids
Математик
 
Мнения: 2394
Регистриран на: 16 Ное 2015, 11:47
Рейтинг: 2552

Re: C++

Мнениеот Гост » 07 Яну 2019, 16:26

Благодаря за помощта, само не разбрах това template <std::size_t n>, макар че си го обяснил в коментара , не съм го срещал в лекциите, има ли други начини без template?
Гост
 

Re: C++

Мнениеот Гост » 07 Яну 2019, 16:48

На 2ра задача while (number = number/ 10); тук сравнява ли ? защото има само едно =
извинявай за тъпите въпроси, но нещо не мога да схвана
Гост
 

Re: C++

Мнениеот Гост » 07 Яну 2019, 16:53

По точно как спира while цикъла
Гост
 

Re: C++

Мнениеот Гост » 07 Яну 2019, 16:56

Аа то става 0 накрая сигурно затова ли ? значи във while може да има изрази мислех че само сравнение
Гост
 

Re: C++

Мнениеот Гост » 07 Яну 2019, 17:05

int s = 0, n = 0;
for(;number>0;){
s = s + number % 10;
number = number/10;
n++;
}
става ли
Гост
 

Re: C++

Мнениеот Davids » 07 Яну 2019, 21:10

Можеше да тестваш и сам де, но да, става :D Само че доста нестандартно като синтаксис и подредба ми се струва :)
*Нещо непосредствено и интересно, привличащо вниманието на читателя и оставящо го с приятна топла усмивка на лицето.*
----
Вече не го правя само за точката. :lol:
Davids
Математик
 
Мнения: 2394
Регистриран на: 16 Ное 2015, 11:47
Рейтинг: 2552


Назад към C, C++



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)
cron