1

(8 відповідей, залишених у C++)

koala написав:
if (special[40] == spec[k])

Що саме ви тут порівнюєте?
Пошукайте документацію функції strcmp, тільки читайте уважно, вона дещо несподівано може поводитися.

Спробувала використати її, але результат не краще

for (int i = 0; i < n; i++)
        {   
            bool k = strcmp(special, spec);
            if (k==0)
            cout << "\nПрізвище:\t" << obj[i].surname << "\tСтаж роботи:\t" << obj[i].year << endl;
        }

2

(8 відповідей, залишених у C++)

Задача звучить наступним чином. "Створити масив структур, що містить інформацію про співробітників приватної клініки. Кожна структура містить поля - прізвище лікаря, спеціалізація, стаж роботи. Написати програму, яка видає наступну інформацію: список лікарів за спеціалізацією Х із зазначенням стажу роботи; середній стаж співробітників клініки. Спеціалізація Х вводиться за запитом з клавіатури."

Я написала код з використанням функцій, але він не працює так, як треба: або виводить забагато, або взагалі не виводить нічого.

#include <iostream> 
#include "windows.h"
#include <clocale>
#include <conio.h>
#include "stdio.h"

using namespace std;

struct book {
    char surname[30];
    char special[40];
    int year;
};

void show(const book obj[], int n)
{
    char special[40];
    char spec[40];
    cout << "Введіть шукану спеціалізацію: ";
    cin.getline(spec, 40);
    for (int i = 0; i < n; i++)
    {
        for (int k = 0; k < n; k++) {
        if (special[40] == spec[k])
            cout << "\nПрізвище:\t" << obj[i].surname << "\tСтаж роботи:\t" << obj[i].year << endl;
        }
    }
}

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    const int n = 3;
    book array[n] = {};
    for (int i = 0; i < n; i++)
    {
        cout << "Прізвище: ";
        cin.getline(array[i].surname, 30);

        cout << "Спеціалізація: ";
        cin.getline(array[i].special, 40);

        cout << "Стаж роботи: ";
        cin >> array[i].year;

        cin.get();
    }
    show(array, n);
    _getch();
    system("pause");
    return 0;
}

3

(11 відповідей, залишених у C++)

Отже, такий варіант у Visual Studio працює так, як треба (працював ще спочатку):

#include <iostream>
#include <Windows.h>
#include <iomanip> 
using namespace std;

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int i = 0, k;
    char ABC[] = { 'А','Б','В','Г','Д','Е','Є','Ж','З',
                'И','І','Ї','Й','К','Л','М','Н','О','П','Р',
                'С','Т','У','Ф','Х','Ц','Ч','Ш','Щ',
                'Ь','Ю','Я' };
    char msg[440];
    cout << "Enter your message: " << endl;
    cin.getline(msg, 440);
    cout << "\nEnter the key:" << endl;
    cin >> k;
    cout << endl;
    char* begin = ABC;
    char* end = ABC + sizeof(ABC);
    for (; msg[i]; ++i)
    {
        char* ch = find(begin, end, msg[i]);
        if (ch != end) msg[i] = *(begin + (ch - begin + k) % sizeof(ABC));
    }
    cout << "Your message is " << endl;
    cout << msg << endl;
    return 0;
}

З онлайн-компілятором вже все зрозуміло, дякую

4

(11 відповідей, залишених у C++)

Дякую за допомогу. Єдине, що я зрозуміла, так те, що онлайн-компілятори - не моє, в тому ж Visual Studio все працює без питань, а компілятор вирішив познущатись з мене (або викладач, який дав такий таск, просто відішлю йому лістинг та відео працюючої програми). Але якщо все ж таки можна реалізувати даний код в компіляторі якось, маякніть мені. Сподіваюсь, зайвим не буде.

5

(11 відповідей, залишених у C++)

Якщо моєте на увазі лапки, то їх вже перевіряла. З одинарними видає помилку до кожної літери warning: multi-character character constant [-Wmultichar]

6

(11 відповідей, залишених у C++)

Задача написати код, який дешифрує повідомлення (великий текст, а не 2-3 слова) за вказаним ключем зміщення. Потрібно використовувати масив символів. Алфавіт без літери ґ. Також цей код повинен обов'язково працювати в онлайн-компіляторі, бо перевіряти будуть саме через нього. В мене є початковий варіант коду, але він не працює:

#include <iostream> 
#include <iomanip> 
 #include<stdio.h>
using namespace std; 
 
int main()
{

    int i = 0, k;
    char A[] = { "А","Б","В","Г","Д","Е","Є","Ж","З",
                "И","Й","К","Л","М","Н","О","П","Р",
                "С","Т","У","Ф","Х","Ц","Ч","Ш","Щ",
                "Ь","Ю","Я"};
    char msg[200];
    cout << "Enter your mesage: " << endl;
    cin.getline(msg, 200);
    cout << "Enter key" << endl;
    cin >> k;
    cout << endl;
    char* begin = A;
    char* end = A + sizeof(A);
    for (; msg[i]; ++i)
    {
        char* ch = find(begin, end, msg[i]);
        if (ch != end) msg[i] = *(begin + (ch - begin + k) % sizeof(A));
    }
    cout << "Your text: " << endl;
    cout << msg << endl;
    return 0;
} 

Компілятор видає таку помилки: error: too many initializers for ‘char []’
error: no matching function for call to ‘find(char*&, char*&, char&)’
З таким раніше ще не працювала, допомжіть будь ласка