|
|||
Данные для тестирования. Текст программы ⇐ ПредыдущаяСтр 5 из 5 Данные для тестирования Тестирование должно обеспечить проверку работоспособности функций для всех вариантов входных данных. Входные данные, на которых должно проводиться тестирование, сведены в таблицу: вариант src num len dest 1 012345 2 2 23 012345 0 1 0 012345 0 6 012345 2 012345 5 3 5 012345 2 6 2345 012345 0 7 012345 3 012345 8 2 пусто 4 012345 -1 2 пусто 012345 5 0 пусто 012345 5 -1 пусто Текст программы include "stdafx.h"
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <iostream>
#define N 80
/**************************************************/ /* Функция выделения подстроки (массивы) */ /*************************************************/ int substr_mas(char src[N],char dest[N],int num,int len){ int i, j; /* проверка случая 4 */ if ( (num<0)||(len<=0) ) { dest[0]=0; return 0; } /* выход на num-ый символ */ for (i=0; i<=num; i++) /* проверка случая 3 */ if ( src[i]=='\0') { dest[0]=0; return 0; } /* перезапись символов */ for (i--, j=0; j<len; j++, i++) { dest[j]=src[i]; /* проверка случая 2 */ if ( dest[j]=='\0') return 1; } /* запись признака конца в выходную строку */ dest[j]='\0'; return 1; } /*************************************************/ /* Функция выделение подстроки */ /* (адресная арифметика) */ /************************************************/ int substr_ptr(char *src, char *dest, int num, int len) { /* проверка случая 4 */ if ( (num<0)||(len<=0) ) return dest[0]=0; /* выход на num-ый символ или на конец строки */ while ( num-- && *src++ ); /* проверка случая 3 */ if ( !num ) return dest[0]=0; /* перезапись символов */ while ( len-- && *src ) *dest++=*src++; /* запись признака конца в выходную строку */ *dest=0; return 1; } /*************************************************/ int _tmain(int argc, _TCHAR* argv[]) { char ss[N], dd[N]; int n, l; system("cls"); printf("input str\n"); gets(ss); printf("begin="); scanf("%d",&n); printf("size="); scanf("%d",&l); printf("array:\n"); if (substr_mas(ss,dd,n,l)) printf(">>%s<<\n>>%s<<\n",ss,dd); else printf("error! >>%s<<\n",dd); dd[0]='\0'; printf("adress arifmetika:\n"); if (substr_ptr(ss,dd,n,l)) printf(">>%s<<\n>>%s<<\n",ss,dd); else printf("error! >>%s<<\n",dd); getch(); return 0; }
|
|||
|