C/C++

Задачи по С++ помогите

помогите пожалуйста (напиши в ответе номер задачи)

1. Дана файл, в котором записана строка символов (создайте сами). Необходимо проверить является ли эта строка палиндромом.
2. Напишите функцию, которая всегда возвращает True, если только не принимает слово ЭКЗАМЕН (в данном случае она вернет «Только не экзамен!»).
3. Написать программу, которая генерирует случайное число от 0 до 1000000. Посчитать количество четных и нечетных цифр в числе.
4. Написать функцию, удаляющую первую и последнюю строку двухмерного массива.
1) Для проверки строки на палиндром, можно использовать функцию reverse из библиотеки algorithm, которая меняет порядок элементов в контейнере на обратный. Затем можно сравнить исходную строку с измененной и вернуть true или false в зависимости от результата. Пример кода:
#include <iostream> #include <fstream> #include <string> #include <algorithm> using namespace std;

bool is_palindrome(string s) { string reversed = s; // копируем строку reverse(reversed.begin(), reversed.end()); // меняем порядок символов на обратный return s == reversed; // сравниваем строки }

int main() { ifstream file(“input.txt”); // открываем файл для чтения if ( file.is _open()) { // проверяем, что файл открыт string line; // переменная для хранения строки из файла getline(file, line); // читаем строку из файла file.close(); // закрываем файл cout << "Строка из файла: " << line << endl; // выводим строку на экран if (is_palindrome(line)) { // проверяем, является ли строка палиндромом cout << “Строка является палиндромом” << endl; } else { cout << “Строка не является палиндромом” << endl; } } else { cout << “Не удалось открыть файл” << endl; // сообщаем об ошибке } return 0; }

2) Для решения этой задачи можно использовать функцию strcmp из библиотеки cstring, которая сравнивает две строки и возвращает 0, если они равны. Затем можно проверить, равна ли переданная функции строка слову ЭКЗАМЕН и вернуть соответствующее значение. Пример кода:
#include <iostream> #include <cstring> using namespace std;

bool always_true(string s) { if (strcmp(s.c_str(), “ЭКЗАМЕН”) == 0) { // сравниваем строки cout << “Только не экзамен! ” << endl; // выводим сообщение return false; // возвращаем false } else { return true; // возвращаем true } }

int main() { string word; // переменная для хранения слова cout << "Введите слово: "; cin >> word; // считываем слово с клавиатуры cout << "Результат функции: " << always_true(word) << endl; // выводим результат функции на экран return 0; }
Anton Romanow
Anton Romanow
1 877
Лучший ответ
n4:
 #include  

template
size_t del_fila(T**& arr, size_t str_c)
{
//Warning!!! Achtung!!! Внимание!!!
//Только для честных двухмерных массивов (у которых каждой строке была веделена память отдельно).
//Без проверки на успешность выделения памяти для первой размерности.
T** newarr = nullptr;
if (str_c > 2)
{
newarr = new T * [str_c-2]; //create new arr
//тут можно добавить проверку на успешность выделения
//если не успешно, вернуть не измененный str_c
//что будет говорить о том, что функция зафейлилась.
//Но мне лень.
delete[] arr[0]; //delete front
delete[] arr[str_c - 1]; //delete last
str_c -= 2; //ajust size
for (size_t i = 0; i < str_c; ++i) newarr[i] = arr[i + 1]; //copy pointers
delete[] arr; //delete old
arr = newarr;
return str_c;
}
//if size
#include <windows.h>
#include <iostream>
#include <iomanip>
#include <string>
#include <vector>

/* На случай подключения случайных чисел */

//#include <time.h>
//#include <stdio.h>
//#include <stdlib.h>
//#include <algorithm>

using namespace std;

class MatrVect
{
public:
int Row;
int Col;
int data;

vector <int> Clmn;
vector < vector <int> > Mtr;

MatrVect(int rr, int cc)
{
Row= rr; Col= cc;
for (int r0= 0; r0<Row; r0++)
{
for (int c0= 0; c0<Col; c0++)
{
data=(r0+1)*10+(c0+1);
Clmn.push_back(data);
}
Mtr.push_back(Clmn);
Clmn.erase(Clmn.begin(), Clmn.end());
}
}

////////////////////

void ShowMatr()
{
for (int r0= 0; r0<Row; r0++)
{
for (int c0= 0; c0<Col; c0++)
{
cout << Mtr[r0][c0] << "\t";
}
cout << endl;
}
}

//////////////////////

void DelFirstLast()
{
if (Row) { Mtr.erase(Mtr.begin()); Row--; }
else throw 0;
if (Row) { Mtr.erase(Mtr.end()); Row--; }
else throw 1;
}

~MatrVect() {}

protected:
private:
};

///////////////////////////////////
int main(int argc, char **argv)
{
system("chcp 1251 > nul");

MatrVect mv(5,5); mv.ShowMatr();
cout << endl;

try{ mv.DelFirstLast(); mv.ShowMatr(); }
catch (int i)
{
switch (i)
{
case 0: cout << "Удалить ПЕРВУЮ строку массива нельзя... Он пуст!" << endl; break;
case 1: cout << "Удалить ПОСЛЕДНЮЮ строку массива нельзя... Он пуст!" << endl; break;
}
}

cout<<endl; system("pause");
return 0;
}
Василий Л
Василий Л
21 700
Василий Л Токмо сам проверяй, боярин, если задашь, например,матрицу из одной строки