Запустите это, чтобы понять, что происходит:
#include <iostream>
using namespace std;
char txt[] = "ETERNITTPLATENE-OG-TAKPAPPEN-BLE-KASTET";
int length = strlen(txt);//
void show_position(char* t1, char* t2)//
{
for (int i = 0; i < length; i++)
{
if (t1 - txt == i)
{
if (t2 - txt == i)
{cout << 'X';}
cout << '1';
}
else if (t2 - txt == i)
{cout << '2';}
else
{cout << '-';}
}
cout << endl;
}
void funk(char* t1, char* t2, int n)
{
show_position(t1, t2);//
while (t1 < t2)
{
++t1;
t2 -= n;
show_position(t1, t2);//
}
cout << *t1 << *t2 << endl;
}
int main() {
cout << txt << endl;//
funk(txt, txt + 27, 3);
return 0;
}
Строки, за которыми следует // и объявление функции, предназначены только для рисования, остальное - ваш почти нетронутый код.
Несколько подсказок / предложений (которые я изменил в вашем коде):
1) используйте cout << endl;
вместо cout << "\n";
.endl является стандартным, и, таким образом, он будет работать должным образом на любой платформе (windows, linux, mac - которая является linux, но использует другую новую строку).Многие приложения поддерживают \ n по умолчанию даже на платформе, которая официально не использует их (например, notepad ++ поддерживает стандарт Linux Newline для Windows), но это не является веской причиной, чтобы не использовать endl.
2) Еслиу вас есть функция, целью которой является печать чего-то, что явно требует новой строки, почему вы ставите новую строку после вызова вместо того, чтобы помещать ее непосредственно в вашу функцию печати?