Programs
Вариант 1
Главная
Код данной программы предназначен только для VS. В Dev-C она будет работать некорректно из-за затирания переменных.
Здесь ошибка
Код:
#include "stdafx.h" #include #include using namespace std; #define MAXLINE 80 int copies(char s[MAXLINE], char s1[MAXLINE], int n) { int i, j; for (i = 0; s[i] != '\0'; i++); for (j = 0; s1[j] != '\0'; j++); if (s[0] == '\0' || s1[0] == '\0' || n <= 0 || !((i+j-1) < MAXLINE)) { return 1; } j--; while (n != 0) { int stop = i; for (i = 0; i < stop;i++) { j++; s1[j] = s[i]; } n--; } j++; s1[j] = '\0'; return 0; } int copies2(char *s, char *s1, int n) { int i, j; for (i = 0; *(s+i) != '\0'; i++); for (j = 0; *(s1+j) != '\0'; j++); if (*s == '\0' || *s1 == '\0' || n <= 0 || !((i + j - 1) < MAXLINE)) { return 1; } j--; while (n != 0) { int stop = i; for (i = 0; i < stop; i++) { j++; *(s1+j) = *(s+i); } n--; } j++; *(s1+j) = '\0'; return 0; } int main() { char a[MAXLINE]; char b[MAXLINE]; cout << "Vvedite stroku kotoraya budet skopirovana" << endl; gets_s(a); cout << "Vvedite stroku v kotoruyu budet skopirovano" << endl; gets_s(b); int some; cout << "Skolko raz kopirovat`?" << endl; cin >> some; //обработка с помощью массива if (copies(a,b,some)) cout << "Error1"; //обработка с помощью адресации if (copies2(a,b,some)) cout << "Error2"; //результат cout << "a= " << a << endl; cout << "b= " << b << endl; return 0; }