Witam, mam prośbę odnośnie sprawdzenia czy dobrze wykonałem zadanie, ponieważ mam co do tego wątpliwości. W razie błędnego wykonania proszę o sprostowanie treści zadania.
Zadanie:
4. Oto szkielet pewnego programu:
#include <iostream>
using namespace std ;
#include <cstring> // dla strlen(), strcpy()
struct stringy
{
char * str; //wskazuje łańcuch
int ct; //długość łańcucha (bez \0")
);
// tutaj prototypy set(), show() i show()
{
stringy beany ;
char testing [] = "Rzeczywistość to już nie to co kiedyś . " ;
set(beany, testing); // pierwszy parametr jako referencja.
// alokacja pamięci na wynik sprawdzania.
// ustawienie pola str struktury beany tak. by
// wskazywała nowy blok;
// kopiowanie testing do nowego bloku,
// ustawienie pola cl zmiennej beany
show(beany); // pokazuje napis z pola raz
show (beany, 2); //pokazuje napis z pola dwukrotnie
testing [0] = 'D';
testing [1] = 'u';
show (testing); //pokazuje łańcuch testing raz
show (testing, 3); //pokazuje łańcuch testing trzykrotnie
show (" Gotowe! ");
return 0;
Uzupełnij powyższy szkielet, definiując opisane funkcje i dodając im prototypy. Zauważmy,
że potrzebne są dwie funkcje show() , obie z parametrami domyślnymi. W razie potrzeby
użyj parametrów const . Zauważmy, że set() powinno korzystać z new do zaalokowania
pamięci na łańcuch. Użyte tutaj techniki są podobne jak w przypadku projektowania i implementacji
klas (w niektórych kompilatorach konieczna może być zmiana nazw plików
nagłówkowych i usunięcie dyrektywy using ) .
Mój kod:
#include <iostream>
#include <cstring>
using namespace std;
struct stringy
{
char* str;
int ct;
};
void set(stringy& st, char tab[]);
void show(const stringy& st, int a = 1);
void show(const char tab[], int a = 1);
int main()
{
stringy beany;
char testing[] = "Rzeczywistosc to juz nie to co kiedys.";
set(beany, testing);
show(beany);
show(beany, 2);
testing[0] = 'D';
testing[1] = 'u';
show(testing);
show(testing, 3);
show("Gotowe!");
system("PAUSE");
}
void set(stringy& st, char tab[])
{
st.str = tab;
int a = strlen(st.str);
st.ct = a;
}
void show(const stringy& st, int a)
{
for (int i = 0; i < a; i++)
{
cout << st.str << endl;
}
}
void show(const char tab[], int a)
{
for (int i = 0; i < a; i++)
{
cout << tab << endl;
}
}