М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
sofya206
sofya206
21.07.2022 08:05 •  Информатика

Дано n строк. вывести для каждой строки good, если она - правильное скобочное выражение и bad, если нет.

👇
Ответ:
fantomac718
fantomac718
21.07.2022
Посмотрел решение на С++. Ну что же, я недаром зову его "полуассемблер" - нечего ему в общеобразовательных школах делать... Писать долго, много и непонятно для непосвященных. А сколько при этом можно ошибок сделать - просто жуть.
Вот для сравнения решение на Паскале. Я тоже использовал стек, чтобы проще было сравнивать)))

// PascalABC.NET 3.2, сборка 1370 от 24.12.2016
// Внимание! Если программа не работает, обновите версию!

function IsGood(s:string):Boolean;
begin
  var St:=new Stack<char>;
  foreach var c in s do
    case c of
    '(':St.Push(c);
    ')':if St.Count>0 then St.Pop
        else begin Result:=false; Exit end;
    end;
  Result:=St.Count=0
end;

begin
  var n:=ReadlnInteger('N=');
  var s:=ReadArrString(n);
  s.Select(x->IsGood(x)).Select(x->x?'Good':'Bad').Println(NewLine)
end.

Контрольный пример (скобки "разбавлены" числами, чтобы было ясно, что программа не только скобки умеет читать, но и проверять их расстановку в произвольной строке)

N= 4
12(3)456(7)8
123((67)8)
12)34(5
(1(234)567
Good
Good
Bad
Bad
4,6(67 оценок)
Ответ:
Nasteckay
Nasteckay
21.07.2022
Для проверки, закрыты ли все скобки, можно было бы просто их посчитать, но мы будем проверять правильность вложенности. Для этого нам пригодится std::stack (да, и решаем на С++).

#include <iostream>
#include <stack>
#include <string>
using namespace std;
typedef unsigned short int USI;

bool hasCorrectBracing(string);

int main()
{
setlocale(0, ""); // кириллица
USI N;
cout << "N = ";
cin >> N;
string row;

for(size_t i = 1; i <= N; i++)
{
cout << "Строка " << i << ": ";
cin >> row;
if ( hasCorrectBracing(row) )
{
cout << "Good\n";
}
else
{
cout < "Bad\n";
}
}

return 0;
}

bool hasCorrectBracing(string r)
{
stack <char> st;

for(string::size_type c = 0;
c < r.size();
c++)
{

if (r[c] == '(')
{
st.push('(');
continue;
}
else
{
if (r[c] == '[')
{
st.push('[');
continue;
}
else
{
if (r[c] == '{')
{
st.push('{');
continue;
}
}
} // end 1st if

if
(
(
(st.top() == '(')
&&
(r[c] == ')')
)
||
(
(st.top() == '[')
&&
(r[c] == ']')
)
||
(
(st.top() == '{')
&&
(r[c] == '}')
)
)
{
st.pop();
} //end 2nd if

} // end for

if ( st.empty() )
{
return true;
}
else
{
return false;
}

} // end fun
4,8(63 оценок)
Открыть все ответы
Ответ:
barmoksana
barmoksana
21.07.2022
Про "виды" устройств не понятно, а основные устройства без которых компьютер не будет работать такие:
Процессор, материнская плата (на ней же BIOS, оперативная памятьи тд), жесткий диск, контроллер (хотя в данном случае может и не нужен, так как управляет внешними устройствами),  блок питания
Этого достаточно, чтоб компьютер работал. А вот чтоб человек мог работать с компьютером еще необходимы устройства взаимодействия или ввода/вывода
Хотя если компьютер является сервером, то достаточно сетевой платы
4,8(64 оценок)
Ответ:
КристиGirl
КристиGirl
21.07.2022

Приложил пример работы программы и добавил комментарии к коду.

Листинг:

from random import randint

n = randint(4, 6)

x = 0 # текущие номер элемента х

y = 0 # текущие номер элемента у

d = 0 # Направление перемещения 0 - вправо, 1 - вниз, 2 - влево, 3 - вверх

curr = 1 # номер элемента по порядку

c = n # размер цепочки

arr = [[0 for i in range(n)] for j in range(n)]

print(f"Размерность массива: {n}x{n}")

for i in range(n * n):

   if d == 0:

       arr[x][y] = curr

       y += 1

       curr += 1

       if y == c:

           y -= 1

           d = 1

           x += 1

           continue

   if d == 1:

       arr[x][y] = curr

       x += 1

       curr += 1

       if x == c:

           x -= 1

           d = 2

           y -= 1

           continue

   if d == 2:

       arr[x][y] = curr

       y -= 1

       curr += 1

       if y == n - c - 1:

           y += 1

           d = 3

           x -= 1

           continue

   if d == 3:

       arr[x][y] = curr

       x -= 1

       curr += 1

       if x == n - c:

           x += 1

           y += 1

           d = 0

           c -= 1

           continue

print("Заполненный массив:")

for i in arr:

   print(*i)


(пайтон) можете решить как новичок, чтобы я смогла понять​
4,7(84 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ