В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
MyrkaPC325
MyrkaPC325
30.05.2021 21:19 •  Информатика

Разработать схему алгоритма для подсчёта количества отрицательных чисел среди целых чисел а,в,с.протестировать алгоритм для всех возможных случаев (когда количество отрицательных чисел равно 0,1,2,3,) кто понимает))

Показать ответ
Ответ:
Uknowmyname
Uknowmyname
31.07.2020 01:24
// PascalABC.Net 3.0, сборка 1052
function kn(a,b,c:integer):byte;
{ функция возвращает количество отрицательных среди a,b,c}
var
  n:byte;
begin
  if a<0 then n:=1 else n:=0;
  if b<0 then Inc(n);
  if c<0 then Inc(n);
  kn:=n
end;

function cond(c:char;v:integer):string;
{ функция формирует строку вида с>0 или c<0 в зависимости от знака v}
begin
  if v<0 then cond:=c+'<0 ' else cond:=c+'>=0'
end;

procedure pv(a,b,c:integer; n:byte);
{ печать строки теста }
var
  m:byte;
begin
  m:=kn(a,b,c);
  Write(cond('a',a),' ',cond('b',b),' ',cond('c',c),' ');
  Write('отрицательных ',m);
  if n=m then Write(' - тест тестовое: ',n);
  Writeln
end;

{ тестовое решение }
const
  T:array[1..8,1..3] of integer=((1,1,1),(1,1,-1),(1,-1,1),
    (1,-1,-1),(-1,1,1),(-1,1,-1),(-1,-1,1),(-1,-1,-1));
  R:array[1..8] of byte=(0,1,1,2,1,2,2,3);
var
  i:byte;
begin
  for i:=1 to 8 do pv(T[i,1],T[i,2],T[i,3],R[i])
end.

Тестирование:
a>=0 b>=0 c>=0 отрицательных 0 - тест
a>=0 b>=0 c<0  отрицательных 1 - тест
a>=0 b<0  c>=0 отрицательных 1 - тест
a>=0 b<0  c<0  отрицательных 2 - тест
a<0  b>=0 c>=0 отрицательных 1 - тест
a<0  b>=0 c<0  отрицательных 2 - тест
a<0  b<0  c>=0 отрицательных 2 - тест
a<0  b<0  c<0  отрицательных 3 - тест
0,0(0 оценок)
Ответ:
ValeriyaPetra
ValeriyaPetra
31.07.2020 01:24
/* Язык C++11. Здесь решение вместе с юнит-тестами  */

#include <iostream>
#include <sstream>
#include <string>

int count_negatives(int a, int b, int c)
{
  return (a<0 ? 1:0) + (b<0 ? 1:0) + (c<0 ? 1:0)
}

void solution(std::istream &input = std::cin, std::ostream &output)
{
  int a, b, c;
  input >> a >> b >> c;
  output << count_negatives(a, b, c) << std::endl;
}

void checkTest(std::string input_data, std::string correct_answer)
{
  std::istringstream input(input_data);
  std::istringstream correct_answer_stream(correct_answer);
  std::stringstream algorithm_answer_stream;
  
  int correct_value, algorithm_value;
  correct_answer_stream >> correct_value;
  
  solution(input, algorithm_answer_stream);
  algorithm_answer_stream >> algorithm_value;
  
  if (correct_value != algorithm_value) {
    std::cerr << "Input: " << input_data << std::endl;
    std::cerr << "Correct: " << correct_value << std::endl;
    std::cerr << "Algorithm: " << algorithm_value << std::endl;
    throw std::runtime_error("Test failed");
  }
}

void runTests()
{
  checkTest("1 2 3", "0");
  checkTest("-1 2 3", "1");
  checkTest("1 -2 3", "1");
  checkTest("1 2 -3", "1");
  checkTest("-1 -2 3", "2");
  checkTest("-1 2 -3", "2");
  checkTest("1 -2 -3", "2");
  checkTest("-1 -2 -3", "3");
}

#ifdef __DEBUG
int main(int argc, const char *argv[])
{
  runTests();
  return 0;
}

#else
int main(int argc, const char *argv[])
{
  solution();
  return 0;
}

#endif
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота