Как откорректировать вывод тестов
У меня проблема с выводом тестов функции на экран . На strdel приходится 60 тестов , 30 на пустую строку , 30 тестов на непустую , как можно откорректировать вывод тестов , ибо у меня выводит лишних 24 на пустую и непустую строку
P.S
Вот сама инструкция к тесту функции
void Strdel(char*
dest, char* src, int
k, int p)
60 тестов (используются все комбинации):
Исходная строка пуста
Исходная строка не пуста
k>0, k<strlen(src)
k<0
k>strlen(src)
k=0
k=strlen(src)
p>0, p<strlen(src)-k
p<0
p>strlen(src)-k
p=strlen(src)-k
p=0
p=strlen(src)
#include <iostream>
using namespace std;
char* strdel1(char* str, int p, int k) {
if ((p <= 0) || (k < 0)) return str;
int size = strlen1(str);
if ((k > size - 1) || (p > k))return str;
for (int i = k; i < size; i++) str[i-p-1] = str[i+1];
return str;
}
char* strdel2(char* str, int p, int k)
{
if ((p <= 0) || (k < 0)) return str;
int size = strlen1(str);
if ((k > size - 1) || (p > k))return str;
int i = k;
while (i < size) { str[i - p - 1] = str[i + 1]; i++; }
return str;
}
char* strdel3(char* str, int p, int k) {
if ((p <= 0) || (k < 0)) return str;
int size = strlen1(str);
if ((k > size - 1) || (p > k))return str;
int i = k;
while (i < size) { *(str+i-p-1) = *(str+i+1);i++; }
return str;
}
char* strdel4(char* str, int p, int k)
{
if ((p <= 0) || (k < 0)) return str;
int size = strlen1(str);
if ((k > size - 1) || (p > k))return str;
for (int i = k; i < size; i++) *(str+i-p-1) = *(str+i+1);
return str;
}
int main ()
{
char* (*Masstrdel[])(char cpy[], int p,int k) = { strdel1,strdel2,strdel3,strdel4 };
const char* str[] = {"","abcdefg"};
const int begin[] = {2,-3,9,0,7};
const int end[] = { 4,-4,6,5,0,7 };
const int n = sizeof(str) / sizeof(str[0]);
const int k = sizeof(Masstrdel) / sizeof(Masstrdel[0]);
const int startL = sizeof(begin) / sizeof(begin[0]);
const int endL = sizeof(end) / sizeof(end[0]);
char tmp[50];
for (int i = 0; i < n; ++i) {
cout << "Checking strdel" << i + 1 << endl;
for (int j = 0; j < startL; ++j) {
for (int l = 0; l < endL; ++l) {
SetColor(7, 0); cout << "Test" << " " << j + 1 << l + 1 << "\n"; SetColor(15, 0);
for (int h = 0; h < k; h++) {
strcpy(tmp, str[i]);
printf_s("strdel%d(\"%s\",%d,%d)= \"%s\"\n", h + 1, str[i], begin[j], end[l], Masstrdel[h](tmp, begin[j], end[l]));
}
next
}
}
}
Ответы (1 шт):
С кол-вом тестов все ок, их по 30 штук. Просто обратите внимание на их номера. Они начинаются с 11, доходят до 16, а потом 21. Ничего странного не видите?
Ошибка здесь
cout << "Test" << " " << j + 1 << l + 1 << "\n";
а нужно так
cout << "Test" << " " << j *n + l + 1 << "\n";