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

Byłby ktoś w stanie pomóc?

Object Storage Arubacloud
+3 głosów
492 wizyt
pytanie zadane 7 lipca 2015 w C i C++ przez Pejo Nowicjusz (190 p.)

Witam.
Czy byłby ktoś wstanie zrobić te zadania i w komentarzach wytłumaczyć o co chodzi w poszczególnych liniach kodu.?
Ze szczególnym naciskiem na konstruktor kopujący oraz operator przypisania (nie rozumiem kompletnie jak on działa, a w tutorialach Pana Mirosława nie znalazłem inforamcji na ten temat).



3. napisać klase "para" zawierającą dwa prywatne pola rzeczywiste.
a) konstruktor z dwoma parametrami z których jeden ma mieć wartość domyślną.
b) konstruktor kopiujący zabezpieczony przed zapisaniem do pól obiektu klasy.
c) chronioną metode suma. Ma zamieniać miejscami wartośći obiektów i zwrócić ich sumę.
4. napisać definicję klasy "lepsza_para" pochodnej od klasy bazowej. ma zawierać statyczne pole typu całkowitego.
a) konstruktor który będzie zwiększał o 1 pole licznik.(uwaga patrz punkt 3.a)
b) destruktor który będzie zmniejszał pole licznik o 1. i który będzie to informował komentarzem?
c) publiczną metode "lepsza_suma" ma zwracać sumę pól klasy bazowej?
5. W funkcji main uwtórz dwa obiekty klasy "lepsza_para" i wywołaj dla jednego z nich metodę suma?

2 odpowiedzi

+1 głos
odpowiedź 7 lipca 2015 przez MrWeb Stary wyjadacz (10,200 p.)
edycja 7 lipca 2015 przez MrWeb
Nie ważne...
komentarz 7 lipca 2015 przez Pejo Nowicjusz (190 p.)
Zapraszam na Politechnikę Rzeszowską.
Dr. Paweł Górka udowodni Ci, że nic nie umiesz :)
komentarz 7 lipca 2015 przez MrWeb Stary wyjadacz (10,200 p.)
No tak, nic nie umiem bo to jest ewidentnie nie mój poziom, ale nadal nie rozumiem po co sobie tak życie komplikować, klasy mają mieć przyjazny dla użytkownika interfejs a nie jakieś kruczki programowania znane tylko wybitnym programistom...

Ja uczę się samemu i tylko z poradników w internecie, nie oczekuj ode mnie doktoratu z programowania ;)
komentarz 7 lipca 2015 przez Pejo Nowicjusz (190 p.)
rozumiem. od początku tok prowadzenia zajęć przez w/w Pana wydawał mi sie dziwny.
jego zadania są śmieszne tyle w temacie.
komentarz 7 lipca 2015 przez MrWeb Stary wyjadacz (10,200 p.)

Gdy już znajdziesz rozwiązania tych zadań, to proszę, wyślj mi je, bo jestem bardzo ciekawy rozwiązań, i tego, jak bardzo się pomyliłem wink

komentarz 7 lipca 2015 przez Przemysław Brzezicki Nowicjusz (100 p.)
class pomiary {
  const int nr_id;
  static int nr_maks;
  double * wyniki;
  int ilosc;
public:
  pomiary(int n, double v=3.5) :nr_id(++nr_maks), ilosc(n) {  // "nr_id" jest const więc wartość MUSI BYĆ przypisana na
    wyniki=new double[n];                                     // liście inicjalizacyjnej, wcześniej zwiększam "nr_maks"
    while(n--)         // pętla oczywiście dowolna, ale "while" było najwygodniejsze
      wyniki[n]=v;
  }

  pomiary(const pomiary & wzor) :nr_id(++nr_maks) {    // "nr_id" j.w.
    int n=wzor.ilosc;
    ilosc=wzor.ilosc;
    wyniki=new double[ilosc];      // tworzę tablicę o rozmiarze takim jak w obiekcie "wzor" ...
    while(n--)
      wyniki[n]=wzor.wyniki[n];    // ... i kopiuję elementy z wzoru
  }

  pomiary & operator= (const pomiary & wzor) {
    int n=wzor.ilosc;
    if (&wzor!=this) {
      ilosc=wzor.ilosc;
      delete [] wyniki;           // usuwam starą tablicę ...
      wyniki=new double[ilosc];   // reszta jak wyżej w konstruktorze kopiującym
      while(n--)
        wyniki[n]=wzor.wyniki[n];
    }
    return *this;   
  }

  ~pomiary() {
    delete [] wyniki;    // tablica "wyniki" była tworzona w konstruktorze więc tu ją usuwamy
  }
};

class zbior_pomiarow {                   // rozwiązanie przykładowe, możliwe są różne koncepcje
  pomiary * tab_pomiarow;                // zbiór można trzymać w tablicy ...
  int ilosc_pomiarow;                    // ... o potrzebnym rozmiarze ...
  zbior_pomiarow (int n);                // ... którą dynamicznie (przez new) tworzy konstruktor (n to rozmiar) ...
  ~zbior_pomiarow ();                    // ... a likwiduje destruktor
  void dodaj_pomiary(pomiary & nowy);    // serie pomiarów trzeba jakoś dodawać do tablicy ...
  int usun_pomiary(int nr_id);           // ... i z niej usuwać
};                                       // itd, można wymyślać. Czy nie przypomina to klasy "szkola" z laboratorium?

int pomiary::nr_maks=0;        // pole statyczne MUSI BYĆ zainicjalizowane poza klasą

int main()
{
  pomiary p1(5);        // tu zadziała konstruktor, użycie domyślnej wartości drugiego parametru (3.5)
  pomiary p2(7, 4.11);  // tu też zadziała konstruktor, oba parametry podane
  pomiary p3(p2);       // tu zadziała konstruktor kopiujący
  p1=p2;                // tu zadziała operator przypisania
  return 0;             // tu zadziałają destruktory p1, p2 i p3
}
komentarz 7 lipca 2015 przez MrWeb Stary wyjadacz (10,200 p.)
Ok, czyli byłem tak głęboko w błędzie, jak tylko się dało...

Dzięki za wrzucenie kodu, teraz rozumiem, że tak naprawdę w ogóle nie powinienem wypowiadać się na temat tych zadań, skoro nie umiem ich nawet sensownie wytłumaczyć, a co dopiero rozwiązać.

Usunąłem treść głównego postu, bo aż wstyd patrzeć...

Jeszcze raz, dzięki!
0 głosów
odpowiedź 7 lipca 2015 przez Pejo Nowicjusz (190 p.)
to jeszcze jedno pytanie dotyczące języka C.
 

zad 1
napisz funkcjje która jako parametr przyjmuje tablice znaków. niech zmienia co 3 znak łańcucza(jeżeli jest duża litera na małą jeśli jest możliwe).
funkcja zwraca liczbe zmian.

zad 2.
napisz program, który wczyta liczbe całkowitą liczba>10 (do skótku).
zaqrezerwuje pamięć dla wczytanej liczby znaków. Wypełnić tablicę znak po znaku aż do zakończenia zarezerwowanego miejsca lub wystąpienia .(kropki), niezależnie co wystąpi wcześniej.
Wywołać funkcje z zadania pierwszego i wyświetli w zależność od tego co zwróci funkcja:
jeśli zwróci 0: "Brak zmian w łańcuchu (wypisać łańcuch)."
jeśli co innego "W łańcuchu (wypisać łańcuch) dokonano (podać liczbe zmian) zmian."

 

i moje wykonanie (któro nie działa).

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int zmiana(char tablica[])
{
    int i=0;
    int liczba_zmian=0;

    for(i=0;i<strlen(tablica);i+3)
    {
        if(tablica[i]>=65&&tablica[i]<=90)
        {
            tablica[i]=tablica[i]+32;
            liczba_zmian++;
        }
    }

    return liczba_zmian;
}

int main()
{

    char* tablica;
    int n;
    int j;
    printf("Podaj wielkosc tablicy:\n"); // wprowadzamy wielkość tablicy.
    scanf("%d", &n);

    do  // petla sprawdzajaca czy podana liczba jest wieksza od 10.
    {
        if(n>10)
            {
                printf("Rozmiar tablicy = %d",n);
            }
        else
            {
                printf("Tablica musi byc wieksza od 10!\n Jeszcze raz podaj wielkosc tablicy:\n");
                scanf("%d", &n);

                    if(n>10)
                    {
                        printf("Rozmiar tablicy = %d",n);
                    }
            }
    } while(n<=10);

    tablica = (char*) malloc (n*sizeof(*tablica));

    printf("%d", sizeof(tablica));

    for(j=0; tablica[j]<n; j++)
    {
        scanf("%[^.\n]s" , tablica);
    }

    int x = zmiana (tablica);

    if(liczba_zmian==0)
    {
        printf("Brak zmian w lancuchu: %c", tablica);
    }
    else
    {
        printf("W lancuchu %c dokonona %d zmian", tablica, liczba_zmian);
    }

    return 0;
}

Podobne pytania

0 głosów
0 odpowiedzi 331 wizyt
pytanie zadane 20 października 2016 w PHP przez krzychu86 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 341 wizyt
0 głosów
1 odpowiedź 279 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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!

...