Mam napisać gotową funkcję która doda znak podany do stringa co 3 znak.
Mój kod
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
char* wstaw(const char* zrodlo, char symbol)
{
int n = strlen(zrodlo);
int rozmiar = n + floor(n / 3) + 1;
int i, j = 0;
char* t = new char[rozmiar];
for (j = 0; j < (rozmiar && zrodlo[i]); j++) {
if (j % 3 == 0) {
t[j] = symbol;
}
else {
t[j] = zrodlo[i];
i++;
}
}
t[j] = '\0';
return t;
}
int main(int argc, char* argv[])
{
char* a = NULL;
if (argc != 3) {
cerr << "Nieprawidlowa ilosc przekazanych argumentow(3)!" << endl;
cout << "Wymagane argumenty to:./nazwa,napis,symbol" << endl;
return -1;
}
else {
a = wstaw(argv[1], argv[2][0]);
cout << a;
if (a)
delete[] a;
a = 0;
}
return 0;
}
Program się kompiluje,ale nie działa przy uruchomieniu,coś mi się wydaje że jest z tymi rozmiarami nie rozumiem tego zbyt dobrze.
Mógłby mi ktoś wytłumaczyć dlaczego int rozmiar ma taki wzór bo akurat ten fragment jest przepisany z zajęć.