• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sprawdzenie poprawności wykonania zadania ("Szkoła programownia")

Object Storage Arubacloud
0 głosów
595 wizyt
pytanie zadane 24 grudnia 2016 w C i C++ przez niezalogowany

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;
	}
}

 

1 odpowiedź

0 głosów
odpowiedź 24 grudnia 2016 przez niezalogowany
Ma ktos jakieś obiekcje?
komentarz 28 stycznia 2019 przez look Użytkownik (520 p.)
Witam, nie wiem czy w ogole jeszcze odwiedzasz to forum.

Ja posiadam, uzywajac referencji pracujesz na danych oryginalnych a wiec powinienes zaalokowac pamiec jak w zadaniu jest napisane za pomoca new, wlasnie mam Twoj kod i go przerobie, sam dopiero sie ucze i trafilem na to zadanie.

 

btw. brak polskich znakow bo w Polsce nie mieszkam i prawie nie uzywam.
komentarz 25 marca 2019 przez dziubi21 Początkujący (310 p.)
edycja 25 marca 2019 przez dziubi21

Pamięć alokujesz dla tab[]? Ja napisałem coś takiego:

#include <iostream>
#include <cstring>

struct stringy {
	char * str;
	int ct;
};
void set(stringy &, char[]);
void show(char [], int a =1);
void show(stringy &, int a =1);
int main(int argc, char **argv)
{
	stringy beany;
	
	char testing[] = "Rzeczywistosc to juz nie to, co kiedys.";
	
	set(beany, testing);
	show(beany);
	show(beany, 2);
	std::cout << std::endl;
	testing[0] = 'D';
	testing[1] = 'u';
	show(testing);
	show(testing, 3);
	std::cout << std::endl;
	show("Gotowe");
	
	return 0;
}

void set(stringy & bean, char test[])
{	
	 bean.str = new char ;
	 strcpy(bean.str, test);
	 int a = strlen(test);
	 bean.ct = a;
}
void show(char tab[], int t)
{
	for(int i = 0; i < t; i++)
		std::cout << tab << std::endl;
}
void show(stringy &bean, int t)
{
	for(int i = 0; i < t; i++)
		std::cout << bean.str << std::endl;
}

 

Podobne pytania

+1 głos
2 odpowiedzi 206 wizyt
pytanie zadane 20 lutego 2017 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 611 wizyt
0 głosów
2 odpowiedzi 2,913 wizyt
pytanie zadane 19 lipca 2016 w Rozwój zawodowy, nauka, praca przez Macin Początkujący (330 p.)

92,537 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...