Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C (СИ) Графика привет. помогите найти ошибку. #include <graphics.h> #include <stdio.h> #include <conio.h> #define PATHTDRIVER "c:\\borlandc\\bgi\\" void uzor() { int x; int y=100; https://www.cyberforum.ru/ c-beginners/ thread282530.html Строка и массив из слов в строке. C (СИ)
Дана строка в виде предложения, причем известно, что слова отделены друг от друга пробелом. Предложение заканчивается точкой. Сформировать массив, состоящий из слов исходного предложения. Вывести слова предложения, количество букв в которых четно. вот мое решение недоделанное (правильнее начатое) #include <stdio.h> #include <string.h> #include <conio.h> main() {
C (СИ) Вывести на экран содержимое файла с программой на С, подсвечивая другим цветом все внешние переменные. https://www.cyberforum.ru/ c-beginners/ thread282437.html
Вывести на экран содержимое файла с программой на С, подсвечивая другим цветом все внешние переменные. Помогите разобраться с программой. Заранее спасибо. #include <windows.h> #include <string.h> #include <stdio.h>
C (СИ) Создать односвязный список из структур Помогите пожалуйста..Сколько читаю ничего не понимаю(Большинство с классами...которые мы не изучали. Понимаю что должно быть значение и указатель на следующий элемент. Создаем структуру struct node { int value; node *next; } https://www.cyberforum.ru/ c-beginners/ thread282432.html
исправить задaчу на сортировки C (СИ)
помогите исправить. вводится запись: Номер маршрута Станция отправления (Время отправления) - Конечная станция (Время прибытия). и по номеру маршрута нужно найти запись через линейный или бинарный поиск #include <stdio.h> #include <stdlib.h> int i; typedef struct{ unsigned min1:6, hour1:5; } TM_OTPR;
C (СИ) Как убрать предупреждение https://www.cyberforum.ru/ c-beginners/ thread282153.html
Компилятор пишет "control may reach end of non–void function", что надо исправить? /* compares two dates */ #include <stdio.h> const struct date { int month, day, year; } d1 = {4, 1, 2000}, d2 = {3, 1, 2001};
C (СИ) Определить элементы матрицы, расположенные выше главной диагонали https://www.cyberforum.ru/ c-beginners/ thread282035.html
Всем доброго времени суток! Задача: Определить те элементы, расположенные выше главной диагонали, которые больше каждого(!) из элементов, расположенных ниже главной диагонали. #include <stdio.h> #define n 5 void main(void) { int x, i, j, k, t, p, u; printf ("ishodnaja matrica:\n");
Определить, сколько раз встречается каждое слово в тексте из файла C (СИ)
програма на си в файле сохраняеться текст.узнать сколько раз встречаеться кожное слово. я вроде розобрался как виводить вместимое файла на екран а как узнать сколько раз встречаеться кожное слово? #include "StdAfx.h" #include <iostream> #include <conio.h> #include<fstream> using namespace std;
C (СИ) Трудный вобор ,QBASIC или С? https://www.cyberforum.ru/ c-beginners/ thread281543.html
Передомной стала одна проблема, я учусь в 9 классе и хочу заниматься прораммированием но не знаю на чём мне учиться ,имею не большой опыт работы с QBASIC (школьная программа обучения) ,но насколько я знаю язык С имеет больше возможностей, что мне выбрать для начала? И пожалуйста если вы за С ,дайте ссылску на обучающую книгу по С++ ток чтоб было как можно понятнее.
C (СИ) Проверить равенство https://www.cyberforum.ru/ c-beginners/ thread281453.html
задачка из одного сайта, вот записал программу умножения матриц, смотрите условие Даны три квадратные матрицы A, B, C, каждая из которых имеет размер n х n. Необходимо проверить равенство: A х B = C. Лимит времени: 3 секунды Технические условия Входные данные Каждый тест начинается значением n (n ≤ 500). Далее следуют три матрицы A, B, C, каждая из которых представляется...
C (СИ) Вывести на экран текст из файла (программа не работает)
я только начинаю учить Си и с++. я тормознул на вроде простой проге вывести на екран текст с файла, вот пробувал сложыть но при отладке пустой екран. Может сам файл скопировать в какуюто особую папку? #include "StdAfx.h" #include <iostream> #include <conio.h> #include<fstream> using namespace std; int _tmain(int argc, _TCHAR* argv) {
C (СИ) Строки си https://www.cyberforum.ru/ c-beginners/ thread280897.html
Задание: Дополнить каждое слово предложения знаком нижнего подчеркивания(_) так, чтобы его длина была равна длине самого длинного слова. Пожалуйства помогите написать лабу, или хотя бы подскажите алгоритм.
0 / 0 / 0
Регистрация: 03.12.2010
Сообщений: 30
0

Написать программу реализующую проверку функции с помощью юнит-тестов - C (СИ) - Ответ 1583259

24.04.2011, 17:14. Показов 1393. Ответов 5
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. У меня есть проблема. По программированию задали такую задачу. Написать программу реализующую проверку функции с помощью юнит-тестов, и если функция некорректна то найти ошибку и исправить. Даны были две функции. Я написал к ним юнит-тесты, в одной функции через трассировку нашел проблему. Исправил. А вот во второй не могу понять, где значение начинает вычисляться неправильно. Помогите пожалуйста.

Вот основной код с юнит-тестами и заголовками функций:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
#include "stdafx.h"
#include "testing.h"
#include "for_unit_test.h"
#include "04_first_func.h"
#include "04_add_func.h"
#include "04_second_func.h"
 
#define MAX_SIZE 10
 
/*!
* Найти элементы пересечения двух матриц
* \param [in] matr1 - первая матрица
* \param [in] height1, width1 - ширина и высота первой матрицы [1, MAX_SIZE]
* \param [in] matr2 - вторая матрица
* \param [in] height2, width2 -  ширина и высота второй матрицы [1, MAX_SIZE]
* \param [out] intersection - массив, содержащий элементы множества пересечения двух матриц
* \return - размер массива intersection
*/
 
void unit_tests_intersectionOfMatrix_1()
{
     puts("Тестирование функции intersectionOfMatrix ..."); 
     // Кол-во тестов
     const int test_count = 12; 
     // Названия тестов (длиной не более 100 символов)
     char test_name[test_count][101] = 
     {  "Матрицы 3 на 3 и матрица 3 на 3. Все элементы",
        "Матрицы 3 на 3 и матрица 3 на 3. Несколько элементов",
        "Матрицы 3 на 3 и матрица 3 на 3. 1 элемент",
        "Матрицы MAX_SIZE на 1 и MAX_SIZE на 1. Один элемент",
        "Матрицы MAX_SIZE на 1 и MAX_SIZE на 1. Несколько элементов",
        "Матрицы MAX_SIZE на 1 и MAX_SIZE на 1. Нет элементов",
        "Матрицы 1 на MAX_SIZE и 1 на MAX_SIZE. Один элемент",
        "Матрицы 1 на MAX_SIZE и 1 на MAX_SIZE. Несколько элементов",
        "Матрицы 1 на MAX_SIZE и 1 на MAX_SIZE. Нет элементов",
        "Матрицы 1 на 1 и 1 на 1. Есть элементы",
        "Матрицы 1 на 1 и 1 на 1. Нет элементов",
                
     }; 
     // Входные данные для тестирования
     int input_height1[test_count] = { 3, 3, 3, MAX_SIZE, MAX_SIZE, MAX_SIZE, 1, 1, 1, 1, 1 };
         int input_width1[test_count] = { 3, 3, 3, 1, 1, 1, MAX_SIZE, MAX_SIZE, MAX_SIZE, 1, 1 };
         int input_height2[test_count] = { 3, 3, 3, MAX_SIZE, MAX_SIZE, MAX_SIZE, 1, 1, 1, 1, 1 };
         int input_width2[test_count] = { 3, 3, 3, 1, 1, 1, MAX_SIZE, MAX_SIZE, MAX_SIZE, 1, 1 };
         const int input_matr1[test_count][MAX_SIZE][MAX_SIZE] = 
         {
             {
         {2,2,2},
         {2,2,2},
         {2,2,2}
             },
             {
                 {2,1,5},
                 {3,4,1},
                 {2,8,6}
             },
             {
                 {2,1,7},
                 {3,8,1},
                 {9,4,6}
             },
             {
                 {2},
                 {3},
                 {9},
                 {5},
                 {6},
                 {7},
                 {9},
                 {5},
                 {1},
                 {3}
             },
             {
                 {1},
                 {3},
                 {3},
                 {4},
                 {6},
                 {7},
                 {9},
                 {5},
                 {1},
                 {2}
             },
             {
                 {7},
                 {8},
                 {9},
                 {4},
                 {6},
                 {7},
                 {9},
                 {5},
                 {4},
                 {3}
             },
             {
                 {7,3,4,5,6,5,4,9,3,2}
             },
             {
                 {8,2,2,5,1,5,4,9,3,1}
             },
             {
                 {3,4,1,6,7,3,2,3,5,1}
             },
             {
                 {3}
             },
             {
                 {8}
             },
     }; 
    const int input_matr2[test_count][MAX_SIZE][MAX_SIZE] = 
         {
             {
         {2,2,2},
         {2,2,2},
         {2,2,2}
             },
             {
                 {2,7,3},
                 {6,4,2},
                 {4,8,1}
             },
             {
                 {3,2,1},
                 {4,5,6},
                 {8,7,9}
             },
             {
                 {3},
                 {3},
                 {4},
                 {6},
                 {8},
                 {9},
                 {4},
                 {3},
                 {2},
                 {1}
             },
             {
                 {1},
                 {5},
                 {3},
                 {6},
                 {7},
                 {78},
                 {98},
                 {53},
                 {2},
                 {1}
             },
             {
                 {6},
                 {9},
                 {55},
                 {45},
                 {65},
                 {75},
                 {95},
                 {55},
                 {45},
                 {35}
             },
             {
                 {75,35,45,57,68,59,42,94,31,2}
             },
             {
                 {8,22,32,45,1,75,94,9,43,12}
             },
             {
                 {22,44,78,8,9,53,22,33,45,10}
             },
             {
                 {3}
             },
             {
                 {7}
             },
     }; 
          // Ожидаемые выходные данные
     int output_intersection[test_count][100] =  
     {
         {2,2,2,2,2,2,2,2,2},
         {2,4,8},
         {},
         {3},
         {1,3},
         {},
         {2},
         {8,1,9,12},
         {},
         {3},
         {}
     }; 
     int expect_result[test_count] =  
     {
         9,
         3,
         0,
         1,
         2,
         0,
         1,
         4,
         0,
         1,
         0
     }; 
         // Собственно тестирование
         int real_result;
         int is_Ok = 1;
         for(int i = 0 ; i < test_count; i++)
         {
         // ВЫЗЫВАЕМ ТЕСТИРУЕМУЮ ФУНКЦИЮ
             real_result=intersectionOfMatrix_1(input_matr1[i], input_height1[i], input_width1[i], input_matr2 [i],input_height2[i],input_width2[i],output_intersection[i] );
             if(real_result!=expect_result[i]) // тест не пройден
             {
                 is_Ok = 0;
                 // Печатаем неудачный тест ...
                 // ...разделитель
                 puts("\n----------------------------------------------------------------");
                 // ...номер и название
                 printf("%d %s\n", i+1, test_name[i]);
                 printf("Expected result: %d\nReal result: %d", expect_result[i], real_result);
             }
            }
 
     // общие результаты тестирования
            puts("\n----------------------------------------------------------------");
            if(is_Ok)  
            { 
                puts("\nfunction correct");
            }
            else       
            { 
                puts("\nfunction incorrect");
            }
}
 
 
 
/*!
* Тестируем функцию  amountOfValueInMatrix
*/
void unit_tests_amountOfValueInMatrix(void);
 
/*!
* Найти количество элементов равных заданному значению в матрице 
* \param [in] value - искомое значение
* \param [in] matr - матрица элементов
* \param [in] height, width - размеры матрицы [1, MAX_SIZE]
* \return - количество элементов раных значению value в матрице matr
*/
 
int _tmain(int argc, _TCHAR* argv[])
{
     TESTING 
     unit_tests_amountOfValueInMatrix();
     unit_tests_intersectionOfMatrix_1();
     WAIT_ANY_KEY
     return 0;
}
 
 
void unit_tests_amountOfValueInMatrix()
{
     puts("Тестирование функции amountOfValueInMatrix ..."); 
     // Кол-во тестов
     const int test_count = 11; 
     // Названия тестов (длиной не более 100 символов)
     char test_name[test_count][101] = 
     {   "Матрица 3 на 3. Несколько элементов",
         "Матрица 3 на 3. Один элемент",
         "Матрица 3 на 3. Нет искомых значений",
         "Матрица MAX_SIZE на 1. Один элемент",
                 "Матрица MAX_SIZE на 1. Несколько элементов",
                 "Матрица MAX_SIZE на 1. Нет элементов",
                 "Матрица 1 на MAX_SIZE. Один элемент",
                 "Матрица 1 на MAX_SIZE. Несколько элементов",
                 "Матрица 1 на MAX_SIZE. Нет элементов",
                 "Матрица 1 на 1. Есть элементы",
                 "Матрица 1 на 1. Нет элементов"
     }; 
     // Входные данные для тестирования
     int input_height[test_count] = { 3, 3, 3, MAX_SIZE, MAX_SIZE, MAX_SIZE, 1, 1, 1, 1, 1 };
         int input_width[test_count] = { 3, 3, 3, 1, 1, 1, MAX_SIZE, MAX_SIZE, MAX_SIZE, 1, 1 };
         int input_value[test_count] = {2, 3, 5, 2, 3, 1, 6, 2, 8, 3, 6};
         const int input_matr[test_count][MAX_SIZE][MAX_SIZE] = 
         {
             {
         {2,3,4},
         {5,6,1},
         {3,2,4}
             },
             {
                 {2,1,5},
                 {3,4,1},
                 {2,4,6}
             },
             {
                 {2,1,7},
                 {3,8,1},
                 {9,4,6}
             },
             {
                 {2},
                 {3},
                 {9},
                 {5},
                 {6},
                 {7},
                 {9},
                 {5},
                 {1},
                 {3}
             },
             {
                 {1},
                 {3},
                 {3},
                 {4},
                 {6},
                 {7},
                 {9},
                 {5},
                 {1},
                 {2}
             },
             {
                 {7},
                 {8},
                 {9},
                 {4},
                 {6},
                 {7},
                 {9},
                 {5},
                 {4},
                 {3}
             },
             {
                 {7,3,4,5,6,5,4,9,3,2}
             },
             {
                 {8,2,2,5,1,5,4,9,3,1}
             },
             {
                 {3,4,1,6,7,3,2,3,5,1}
             },
             {
                 {3}
             },
             {
                 {8}
             },
     }; 
          // Ожидаемые выходные данные
     int expect_result[test_count] =  
     {
         2,
         1,
         0,
         1,
                 2,
                 0,
                 1,
                 2,
                 0,
                 1,
                 0
     }; 
         // Собственно тестирование
         int real_result;
         int is_Ok = 1;
         for(int i = 0 ; i < test_count; i++)
         {
         // ВЫЗЫВАЕМ ТЕСТИРУЕМУЮ ФУНКЦИЮ
             real_result=amountOfValueInMatrix_4(input_value[i], input_matr[i], input_height[i], input_width[i]);
             if(real_result!=expect_result[i]) // тест не пройден
             {
                 is_Ok = 0;
                 // Печатаем неудачный тест ...
                 // ...разделитель
                 puts("\n----------------------------------------------------------------");
                 // ...номер и название
                 printf("%d %s\n", i+1, test_name[i]);
                 printf("Expected result: %d\nReal result: %d", expect_result[i], real_result);
             }
            }
 
     // общие результаты тестирования
            puts("\n----------------------------------------------------------------");
            if(is_Ok)  
            { 
                puts("\nfunction correct\n");
            }
            else       
            { 
                puts("\nfunction incorrect\n\n\n");
            }
}
Вот первая функция (уже отлаженная - работает):
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
#include "stdafx.h"
#include "04_first_func.h"
 
/*!
* Найти количество искомых значений в одномерном массиве
* \param [in] value - искомое значение
* \param [in] arr - массив, в котором считается количество элементов с заданным значением
* \param [in] size - размер массива [1, MAX_SIZE]
* \return - количество элементов в массиве arr равных значению value 
*/
int amountOfValueInArray_4( int value, const int arr[ MAX_SIZE ], int size )
{
    int amountOfValue = 0;    // счётчик элементов в массиве равных искомому значению
 
    // Найти количество элементов в массиве arr, равных value
    for ( int i = 0; i < size; i++ )
    {
        if ( arr [ i ] == value )
        {
            amountOfValue++;            
        }
    }
 
    return amountOfValue;
}
 
int amountOfValueInMatrix_4( int value, const int matr[MAX_SIZE][MAX_SIZE], int height, int width )
{                             
    int amountOfValue = 0;    // Количество элементов в матрице равных искомому
    int amountOfValueInRow;   // Количество элементов в одном ряде матрицы равных искомому
    
    // Для каждого ряда матрицы
    for ( int i = 0; i < height; i++ )
    {
        // Найти количество искомых значений в ряде...
        amountOfValueInRow = amountOfValueInArray_4( value, matr [ i ], width );
 
        // ...добавить их к общему количеству значений в матрице
        amountOfValue += amountOfValueInRow; 
    }
 
    return amountOfValue;
}
А вот вторая, которую я не могу починить (в ней еще была синтаксическая ошибка, функция не возвращала значение, это я поправил):
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
int intersectionOfMatrix_1( const int matr1 [MAX_SIZE][MAX_SIZE], int height1, int width1, const int matr2 [MAX_SIZE][MAX_SIZE], int height2, int width2, int intersection[MAX_SIZE] )
{
    int size = 0;              // Размер массива intersection
    int amountElementInMatr2;  // Количество встречи элемента из первой матрице во второй
 
    // Для каждого элемента из первой матрицы
    for ( int i = 0; i < height1; i++ )
    {
        for ( int j = 0; j < width1; j++ )
        {
 
            amountElementInMatr2 = amountOfValueInMatrix_4( matr1 [i][j], matr1, height2, width2);
 
            // Если элемент из первой матрицы встречается во второй и
            // его количество во второй матрице больше чем в массиве пересечений intersection 
            if( amountElementInMatr2 && amountOfValueInArray_4( matr1 [i][j], intersection, size ) < amountElementInMatr2 )
            {  
                // Добавить элемент из первой матрицы в массив пересечения intersection
                intersection [ size ] = matr1 [i][j];
                size++;
            }
        }
    }
    return size;
}
По моим юнит-тестам можно увидеть на каких входных данных она косячит.

К теме прикрепил архив, со всеми нужными файлами для компиляции программы, их сунуть просто в корневую программы. А 04_first_func.dll надо сунуть в Debug.
Hepl me

Очень надеюсь что откликнитесь.

Вернуться к обсуждению:
Написать программу реализующую проверку функции с помощью юнит-тестов C (СИ)
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2011, 17:14
Готовые ответы и решения:

Написать программу реализующую проверку кодов Хемминга
Написать программу реализующую проверку кодов Хемминга, данные задаются рандомом или с клавиатуры....

Написать программу, реализующую следующие функции работы с массивом строк (путем ввода соответствующих команд в консоли)
Помогите с решением на C#: 1. Создание строки и добавление её строки в массив на заданную...

Написать программу для вычисления выражения с помощью рекурсивной функции
Помогите написать программу C++ для вычисления выражения an. Вычисление организовать в виде...

Как написать проверку портов с помощью PortChecker?
Не подскажите как написать проверку портов?

5
24.04.2011, 17:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2011, 17:14
Помогаю со студенческими работами здесь

Написать программу для нахождения значения функции с помощью ряда Тейлора
Добрый день всем. Прошу помощи у более опытных товарищей. Не могу решить задачу. Вычислить и...

Написать программу поиска максимального элемента массива с помощью рекурсии и обычной функции
Здравствуйте. Мне нужно написать программу поиска максимального элемента массива с помощью рекурсии...

Написать программу, реализующую авиасправочник
Здравствуйте! Помогите пожалуйста!!! Текст задачи: Написать программу, реализующую...

Написать программу генератор тестов
Здравствуйте, Помогите пожалуйста написать программу генератор тестов на консоли С#

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru