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

Ввести два трехзначных числа a и b. Используя полосу прокрутки, подобрать в диапазоне от a до b число x. При пользовательской функции найти сумму первой и последней цифры числа x, в Visual Studio Basic

Показать ответ
Ответ:
бюро
бюро
10.12.2022 13:34

C Lang

#include <ctype.h>

#include <errno.h>

#include <stdio.h>

#include <stdlib.h>

#include <sys/ioctl.h>

#include <termios.h>

#include <unistd.h>

/*** defines ***/

#define CTRL_KEY(k) ((k) & 0x1f)

/*** data ***/

struct editorConfig {

 int screenrows;

 int screencols;

 struct termios orig_termios;

};

struct editorConfig E;

/*** terminal ***/

void die(const char *s) {

 write(STDOUT_FILENO, "\x1b[2J", 4);

 write(STDOUT_FILENO, "\x1b[H", 3);

 perror(s);

 exit(1);

}

void disableRawMode() {

 if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &E.orig_termios) == -1)

   die("tcsetattr");

}

void enableRawMode() {

 if (tcgetattr(STDIN_FILENO, &E.orig_termios) == -1) die("tcgetattr");

 atexit(disableRawMode);

 struct termios raw = E.orig_termios;

 raw.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);

 raw.c_oflag &= ~(OPOST);

 raw.c_cflag |= (CS8);

 raw.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);

 raw.c_cc[VMIN] = 0;

 raw.c_cc[VTIME] = 1;

 if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw) == -1) die("tcsetattr");

}

char editorReadKey() {

 int nread;

 char c;

 while ((nread = read(STDIN_FILENO, &c, 1)) != 1) {

   if (nread == -1 && errno != EAGAIN) die("read");

 }

 return c;

}

int getCursorPosition(int *rows, int *cols) {

 char buf[32];

 unsigned int i = 0;

 if (write(STDOUT_FILENO, "\x1b[6n", 4) != 4) return -1;

 while (i < sizeof(buf) - 1) {

   if (read(STDIN_FILENO, &buf[i], 1) != 1) break;

   if (buf[i] == 'R') break;

   i++;

 }

 buf[i] = '\0';

 if (buf[0] != '\x1b' || buf[1] != '[') return -1;

 if (sscanf(&buf[2], "%d;%d", rows, cols) != 2) return -1;

 return 0;

}

int getWindowSize(int *rows, int *cols) {

 struct winsize ws;

 if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == -1 || ws.ws_col == 0) {

   if (write(STDOUT_FILENO, "\x1b[999C\x1b[999B", 12) != 12) return -1;

   return getCursorPosition(rows, cols);

 } else {

   *cols = ws.ws_col;

   *rows = ws.ws_row;

   return 0;

 }

}

/*** output ***/

void editorDrawRows() {

 int y;

 for (y = 0; y < E.screenrows; y++) {

   write(STDOUT_FILENO, "~", 1);

   if (y < E.screenrows - 1) {

     write(STDOUT_FILENO, "\r\n", 2);

   }

 }

}

void editorRefreshScreen() {

 write(STDOUT_FILENO, "\x1b[2J", 4);

 write(STDOUT_FILENO, "\x1b[H", 3);

 editorDrawRows();

 write(STDOUT_FILENO, "\x1b[H", 3);

}

/*** input ***/

void editorProcessKeypress() {

 char c = editorReadKey();

 switch (c) {

   case CTRL_KEY('q'):

     write(STDOUT_FILENO, "\x1b[2J", 4);

     write(STDOUT_FILENO, "\x1b[H", 3);

     exit(0);

     break;

 }

}

/*** init ***/

void initEditor() {

 if (getWindowSize(&E.screenrows, &E.screencols) == -1) die("getWindowSize");

}

int main() {

 enableRawMode();

 initEditor();

 while (1) {

   editorRefreshScreen();

   editorProcessKeypress();

 }

 return 0;

}

0,0(0 оценок)
Ответ:
alina1930
alina1930
06.09.2022 01:45
// PascalABC.NET 3.0, сборка 1073
const
  nn=30;
  mm=30;
var
  a:array[1..mm,1..nn] of integer;
  m,n,i,j,k,s:integer;
begin
  Writeln('Введите число строк и столбцов массива: '); Read(m,n);
  Randomize;
  Writeln('*** Исходный массив ***');
  k:=0;
  for i:=1 to m do begin
    for j:=1 to n do begin
      a[i,j]:=Random(51)-25;
      Write(a[i,j]:4);
      if Odd(a[i,j]) then Inc(k)
    end;
    Writeln
  end;
  if k>5 then begin
    Writeln('Средние арифметические отрицательных элементов по строкам');
    for i:=1 to m do begin
      s:=0; k:=0;
      for j:=1 to n do
        if a[i,j]<0 then begin Inc(k); s:=s+a[i,j] end;
      if k>0 then Writeln(s/k:9:5) else Writeln('  0.00000');
    end
  end
  else begin
    Writeln('*** Результирующий массив ***');
    for i:=1 to m do begin
      for j:=1 to n do begin a[i,j]:=2*a[i,j]; Write(a[i,j]:4) end;
    Writeln
    end
  end
end.

Тестовые решения:
Введите число строк и столбцов массива:
8 6
*** Исходный массив ***
 -16  -8  -1  24 -22   1
  -9 -20 -25  13 -11  10
 -15  10 -12  20 -22   3
  -6  25  -3  25 -14  22
  24  -4  24  17  -4 -17
 -23  -9 -22   1 -18 -13
 -12  13   6 -16   2 -13
  19   8 -22  14  -3   4
Средние арифметические отрицательных элементов по строкам
-11.75000
-16.25000
-16.33333
 -7.66667
 -8.33333
-17.00000
-13.66667
-12.50000

Введите число строк и столбцов массива:
3 5
*** Исходный массив ***
   3  24 -21 -22  -8
 -21  14 -22   0 -22
  15 -16  -2   6  22
*** Результирующий массив ***
   6  48 -42 -44 -16
 -42  28 -44   0 -44
  30 -32  -4  12  44
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота