Форум программистов, компьютерный форум CyberForum.ru

Не могу отловить крайние случаи - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создание тестовой оболочки http://www.cyberforum.ru/cpp-beginners/thread1541647.html
Доброго времени суток. Хочу создать тестовую оболочку. Подскажите с чего начать. P.S: Без троллинга, помогите добрые люди
C++ Вычисление функции разложением в ряд Тейлора Дано вещественное число X и целое число N (> 0). Найти значение выражения X − X3/(3!) + X5/(5!) − … + (−1)N·X2·N+1/((2·N+1)!) x-\frac{{x}^{3}}{3!}+\frac{{x}^{5}}{5!}+...+\frac{{-1}^{N}{x}^{2N+1}}{(2N+1)!} (N! = 1·2·…·N). Полученное число является приближенным значением функции sin в точке X. через FOR помогите очень нужно буду благодарен http://www.cyberforum.ru/cpp-beginners/thread1541644.html
Ввести число и номер месяца. Напечатать дату прописью C++
Ввести число и номер месяца. Напечатать дату прописью. Как можно это реализовать?
C++ Что такое "эхо печать"? И как через такую печать сделать калькулятор?
Само задание такое: Создать программу-калькулятор, обеспечивающую ввод с клавиатуры в режиме эхо-печати только цифр, а также обработку нажатия клавиш +, -, *,/ с помощью акселераторов. Я не пойму фразу "ввод с клавиатуры в режиме эхо-печати". Что она означает? Гугл упорно суёт мне PHP. Но мне надо сделать на C++ (Win API). Что такое эхо-печать?
C++ Aapt.exe could not be found http://www.cyberforum.ru/cpp-beginners/thread1541611.html
Установил vs 14, доустановил ndk в нем же, создаю стандартный проект "Hello world", собираю, при попытке запустить появилась ошибка aapt.exe could not be found at ' ', потом постоянно при настройке проекта она постоянно вылетала. Может кто сталкивался с таким? Помогите если справились
C++ Переставить цифры местами так, чтобы получилось большее число Дано число. Если можно переставить его цифры так, чтобы получилось большее число, выведите YES, в противном случае выведите NO. Например, в числе 3112 можно переставить цифры и получить 3211, подробнее

Показать сообщение отдельно
oPean
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 44
30.09.2015, 19:36     Не могу отловить крайние случаи
Всем привет. Зарегистрировался на одном из многочисленных онлайн курсов по С++. Не могу "сдать" проверяющему сервису две задачи уже достаточно долго.
Условие первой:
Кликните здесь для просмотра всего текста
Напишите функцию, которая принимает на вход целочисленную матрицу M (другими словами, просто двумерный целочисленный массив) размера rows×cols, и возвращает транспонированную матрицу MT (тоже двумерный целочисленный массив) размера cols×rows. Если в M на пересечении i-ой строки и j-ого столбца стояло число x, то на пересечении j-ой строки и i-ого столбца в матрице MT тоже будет стоять число x, или другими словами MT[j][i]=M[i][j].

Обратите внимание, что вам неизвестно, каким именно способом выделялась память для массива M. Выделять память под массив MT можете любым удобным вам способом. Изменять исходную матрицу нельзя.

Требования к реализации: при выполнении этого задания вы можете определять любые вспомогательные функции. Вводить или выводить что-либо не нужно. Реализовывать функцию main не нужно.

Мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <cstdlib>
 
using namespace std;
int **m = 0;
int **mt = 0;
int rows =3, cols = 5;
int main() {
    
    int ** transpose(const int * const * m, unsigned rows, unsigned cols);
    
    transpose(m, rows, cols);
    for (int i = 0; i != cols; ++i) {
        for (int j = 0; j != rows; ++j)
            cout << mt[i][j] << " ";
        cout << endl;
    }
    void free_array2d(int **m, int rows, int cols);
    return 0;
}
 
 
int ** transpose(const int * const * m, unsigned rows, unsigned cols){
    
    int ** create_array2d(int rows, int cols);
    m=create_array2d(rows, cols);
    mt = create_array2d(cols, rows);
    int count = 0;
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols; ++j)
            cout << m[i][j] << " ";
        cout << endl;
    }
    for (int i = 0; i != cols; ++i) {
        for (int j = 0; j != rows; ++j)
            mt[i][j] = m[j][i];
    }
    
    return mt;
}
 
 
int ** create_array2d(int rows, int cols) {
 
        int ** m = new int*[rows];
        m[0] = new int[rows*cols];
        for (size_t i = 1; i != rows; i++)
            m[i] = m[i - 1] + cols;
        int count = 0;
        for (int i = 0; i != rows; ++i) {
            for (int j = 0; j != cols; ++j){
                m[i][j] = count;
                count++;
            }
        }
 
    
    return m;
}
Условие второй:
Кликните здесь для просмотра всего текста
Напишите функцию поиска первого вхождения шаблона в текст. В качестве первого параметра функция принимает текст (C-style строка), в которой нужно искать шаблон. В качестве второго параметра строку-шаблон (C-style строка), которую нужно найти. Функция возвращает позицию первого вхождения строки-шаблона, если он присутствует в строке (помните, что в C++ принято считать с 0), и -1, если шаблона в тексте нет.

Учтите, что пустой шаблон (строка длины 0) можно найти в любом месте текста.

Требования к реализации: при выполнении данного задания вы можете определять любые вспомогательные функции, если они вам нужны. Вводить или выводить что-либо не нужно. Реализовывать функцию main не нужно.


Мое решение(возможно довольно кривое, т.к. давно пытаюсь сдать, кучу костылей натыкал):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
using namespace std;
 
const char text[] = "";
const char pattern[] = "";
unsigned Strlen(const char *str);
int len_text = Strlen(text);
int len_pattern = Strlen(pattern);
int Strstr(const char *text, const char *pattern);
 
int main() {
    cout << Strstr(text, pattern);
    return 0;
}
 
int Strstr(const char *text, const char *pattern) {
    
    if (len_text < len_pattern) return -1;
    if ((len_text == 0) && (len_pattern == 0)) return 0;
    if ((len_text == 0) && (len_pattern != 0)) return -1;
    if ((len_text != 0) && (len_pattern == 0)) return 0;
    int j = 0;
    int i = 0;
    if ((len_text == 1) && (len_pattern == 1)) {
        if (*text == *pattern) { return 0; }
        else { return -1; }
    }
    else {
        for (i = 0; i < len_text; i++) {
            if (text[i] == pattern[j])
            {
                j++;
            }
            else
            {
                if (j > 0) i -= j;
                j = 0;  
            }
 
            if (j == len_pattern)
            {
                return i - len_pattern + 1;
            }
        }
    }
    if (i == len_text - len_pattern + 1) return -1;
 
    return -1;
}
 
unsigned Strlen(const char *str) {
    int count1 = 0;
    while (*str != 0) {
        str++;
        count1++;
 
    }
    return count1;
}
В идеале, подскажите как их исправить, ибо я уже задолбался с ними.
Но если просто укажите, на каких входных данных проги лажают, тоже хорошо будет.
P.S. само собой, функцию main на проверку не отправляю. При проверке обе программы компилируются, но на одном из тестов выдают неверный ответ.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru