Opcję 1 Holden chyba od początku znał
Od początku uznałem, że pytanie brzmi "Jak zamienić tablice na stringa?". Chyba za bardzo komplikuję proste rzeczy. Nie nadaję się na nauczyciela
Opcję 1 Holden chyba od początku znał
Od początku uznałem, że pytanie brzmi "Jak zamienić tablice na stringa?". Chyba za bardzo komplikuję proste rzeczy. Nie nadaję się na nauczyciela
Ten post był edytowany przez Ryan dnia: 24 listopada 2017 - 14:49
Jakie masz wykształcenie?chce chociaz staz, dajcie mi staz a przy tym seks z co najmniej srednio atrakcyjna ciapka
typedef struct przedmiot { char nazwa[50]; char prowadzacy[50]; int liczba_studentow; int liczba_grup; } Przedmiot;Powiedzmy, ze mamy tablice z 10 przedmiotami. I jak mam napisac ten plik tekstowy, dane dla 1 przedmiotu w jednej linijce? Czy dane dla kazdego .nazwa .prowadzacy w osobnej? I jak syntax ma wygladac ifstream << getline <<tablica[i].nazwa ??? Czy cos takiego?
Sam sobie wymyśl format i napisz parser
Ten post był edytowany przez Kurzy dnia: 15 lutego 2018 - 18:33
#include <iostream> #include <fstream> #include <string> using namespace std; struct przedmiot { string nazwa; string prowadzacy; int liczba_studentow; int liczba_grup; }; int main() { int liczba = 5; przedmiot tablica[liczba]; ifstream file_("test.txt"); string a[liczba]; string b[liczba]; int c[liczba]; int d[liczba]; if (file_.is_open()) { for (int i=0;i<liczba;i++) { while (file_ >> a[i] >> b[i] >> c[i] >> d[i]) { cout << a[i] << " " << b[i] << " " << c[i] << " " << d[i] << "\n"; tablica[i].nazwa = a[i]; tablica[i].prowadzacy = b[i]; tablica[i].liczba_studentow = c[i]; tablica[i].liczba_grup = d[i]; } file_.close(); } } for (int z=0; z<liczba;z++ ) { cout << tablica[z].nazwa << endl; cout << tablica[z].prowadzacy << endl; cout << tablica[z].liczba_studentow << endl; cout << tablica[z].liczba_grup << endl; } return 0; }Tak wyglada plik tekstowy
Polski Sloboda 24 3 Matma Maslanka 28 2 Geografia Plomyk 21 5 Angielski Kaszu 26 4 Niemiecki Kulka 22 3tak wyglada kompilacja
int main() { const unsigned liczba = 5; przedmiot tablica[liczba]; ifstream file_("test.txt"); if (!file_.is_open()) return 1; for (unsigned i = 0; i < liczba; i++) file_ >> tablica[i].nazwa >> tablica[i].prowadzacy >> tablica[i].liczba_studentow >> tablica[i].liczba_grup; file_.close(); for (unsigned i = 0; i < liczba; i++) { cout << tablica[i].nazwa << endl << tablica[i].prowadzacy << endl; cout << tablica[i].liczba_studentow << endl << tablica[i].liczba_grup << endl; } return 0; }O co chodzi z AoS (array of structures), SoA (structure of arrays)? Masz już swoje "przedmiot tablica[liczba];" zdolne do przechowania wszystkich dancyh. To tablica struktur (AoS). Po co Ci do tego zbiór czterech zmiennych zdolnych do przechowania wszystkich wartości z poszczególnych pól struktury (gdybyś a, b, c i d wrzucił w strukturę - którą tu jest de facto wycinek stosu - miałbyś SoA, rozwiązanie często bardziej wydajne przy nieliniowym, wybiórczym dostępie do danych).
Ten post był edytowany przez Ryan dnia: 16 lutego 2018 - 15:38
Ten post był edytowany przez Holden dnia: 16 lutego 2018 - 15:50
Szczerze? Nie wiem. C++ jest kosmicznie złożonym (przekomplikowanym) językiem i istniejące, dobre książki będą niezrozumiałe, a zrozumiałe książki nie będą zbyt dobre.dziekuje Ucze sie z google Polecasz jakas ksiazke do c++?
Nie, tak jak napisałem ("stringa, ifstream i couta (ok, gówno i meh)") string jest ok.cos jest nie tak ze <string>?
Dlaczego zawsze od poczatku ludzie sie tak martwia przepelnieniem pamieci?
Czy po wyjsciu poza funkcje main pamiec nie jest czasem automatycznie czyszczona? Sorry, jesli pisze glupote
Ten post był edytowany przez Ryan dnia: 19 lutego 2018 - 14:14
(define (recur n) (if (< n 3) n (+ (recur (- n 1)) (* (recur (- n 2)) 2) (* (recur (- n 3)) 3))))edit dobra juz wiem, tylko musze sie nauczyc jak sie indeksuje w scheme
Ten post był edytowany przez Holden dnia: 18 czerwca 2018 - 04:23
#include <iostream> using namespace std; class Zwierze { protected: double masa; int wiek; public: Zwierze(const double& masa_in, const int& wiek_in) { masa=masa_in; wiek=wiek_in; } void wypisz() const; }; class Pies : public Zwierze { protected: string rasa; public: Pies(const string& rasa_in, const double& masa_in, const int& wiek_in) : Zwierze(masa_in, wiek_in) { rasa=rasa_in; } void wypisz() const; }; class PiesDomowy : public Pies { protected: string imie; public: PiesDomowy(string imie_in, const string& rasa_in, const double& masa_in, const int& wiek_in) : Pies(rasa_in, masa_in, wiek_in) { imie = imie_in; } void wypisz() const; }; void Zwierze::wypisz() const { cout << masa << " " << wiek << " " << endl; } void Pies::wypisz() const { cout << "KOLEJNA GRUPA: " << endl; Zwierze::wypisz(); cout << rasa << " "; } void PiesDomowy::wypisz() const { cout << endl; Pies::wypisz(); cout << " " << imie << endl; } int main() { Zwierze p(3.5, 10); Pies ps("bokser", 3.5, 10); PiesDomowy po("Reksio", "bokser", 3.5, 10); p.wypisz(); ps.wypisz(); po.wypisz(); return 0; }
Nie znam się na C/C++, ale jak usuwałem u siebie const i & z konstruktorów to wszystko się kompiluje.
Co pokazuje kompilator? A może kompiluje się, ale wypisują się głupoty?
Ticket rejected. Insufficient symptoms.
Znacie sie na C?
Dlaczego ten kod dziala:
https://www.geeksfor...et-1-insertion/
A ten nie?
#include <stdio.h> #include <stdlib.h> typedef struct tree *T_tree; struct tree { T_tree left; int key; T_tree right; int height; //int size = 0; }; T_tree Tree (T_tree l, int k, T_tree r) { T_tree t = malloc(sizeof(*t)); t-> left=l; t-> key=k; t->right = r; if (l==NULL && r == NULL) { t->height = 1; } /* else { t->height++; }*/ return t; } //bigger of 2 integers: int max(int a, int b) { if (a>=b) { return a; } else { return b; } } //actual height of tree int height(T_tree t) { if (t==NULL) return 0; return t->height; } T_tree rightRotate(T_tree t) { T_tree t1 = t->left; T_tree t2 = t1->right; //rotation: t1->right = t; t->left = t2; //update heights: t->height = max(height(t->left), height(t->right))+1; t1->height = max(height(t1->left), height(t1->right))+1; return t1; }; T_tree leftRotate(T_tree t) { T_tree t1 = t->right; T_tree t2 = t1->left; //rotation: t1->left = t; t->right = t2; //update heights: t->height = max(height(t->left), height(t->right))+1; t1->height = max(height(t1->left), height(t1->right))+1; return t1; }; //get balance factor of node N int getBalance(T_tree node) { if (node == NULL) return 0; return height(node->left) - height(node->right); } T_tree insert(int key, T_tree t) { if (t==NULL) { return Tree(NULL, key, NULL); } if (key < (t->key)) { Tree(insert(key,t->left), t->key, t->right); } else if (key > t->key) { return Tree(t->left, t->key, insert(key, t-> right)); } else return Tree(t->left, key, t-> right); //update height of this node t->height = 1 + max(height(t->left), height(t->right)); //is node becomed unbalanced? int balance = getBalance(t); if (balance >1 && key< t->left->key) return rightRotate(t); if (balance <-1 && key > t->right->key) return leftRotate(t); if (balance>1 && key > t->left->key) { t->left = leftRotate(t->left); return rightRotate(t); } if (balance < -1 && key < t->right->key) { t->right = rightRotate(t->right); return leftRotate(t); } return t; } void preOrder(T_tree root) { if(root != NULL) { printf("%d ", root->key); preOrder(root->left); preOrder(root->right); } } int main(int argc, char const *argv[]) { T_tree t1 = NULL; t1 = insert(10, t1); t1 = insert(20, t1); t1 = insert(30, t1); t1 = insert(40, t1); t1 = insert(50, t1); t1 = insert(15, t1); preOrder(t1); return 0; }
Przez "nie dziala" rozumiem: nie wczytuje 15 jesli wstawiam nie po kolei, a preorder nie dziala tak jak powinien.
Pierwszy kod daje wynik:
30 20 10 25 40 50
A moj:
10 20 30 40 50
moj kod rozni sie tylko ta bardzej "fancy" definicja wierzcholka
Ten post był edytowany przez Holden dnia: 30 sierpnia 2018 - 17:23
typedef struct tree *T_tree; struct tree { T_tree left; int key; T_tree right; int height; //int size = 0; }; T_tree Tree (T_tree l, int k, T_tree r) { T_tree t = malloc(sizeof(*t)); t-> left=l; t-> key=k; t->right = r; if (l==NULL && r == NULL) { t->height = 1; } /* else { t->height++; }*/ return t; }zamiast
struct Node { int key; struct Node *left; struct Node *right; int height; }; struct Node* newNode(int key) { struct Node* node = (struct Node*) malloc(sizeof(struct Node)); node->key = key; node->left = NULL; node->right = NULL; node->height = 1; // new node is initially added at leaf return(node); }nie uzywam tych wskaznikow do struktury. Ech, chyba musze wiecej poczytac o typedef
#include <iostream> using namespace std; class C1 { public: int a=5; C1() { cout<<"Class constructed"<<endl; } C1(const C1& object) { cout<<"Copy const called"<<endl; a=7; } int getter() { cout<<"Object printed: "<<endl; return a; } }; int main() { C1 obj0(); C1 obj1; C1 obj2(obj1); C1 obj3 = obj1; //obj0.getter(); cout<<obj1.getter()<<endl; cout<<obj2.getter()<<endl; cout<<obj3.getter()<<endl; }
Class constructed Copy const called Copy const called Object printed: 5 Object printed: 7 Object printed: 7
Dawno nie używałem C++(kilka lat), ale jak przekazujesz przez referencje to nadpisujesz ten pierwszy obiekt.
Czyli linijka C1 obj2(obj1); zmodyfikuje obiekt obj1.
Jakbyś teraz wywołał jeszcze raz cout<<obj1.getter()<<endl; to też wyrzuci 7. To tak z głowy piszę, więc pewności nie mam.
Zajebista sprawa - zadania, challenge'e itd. z gamifikacją i społecznościówką.
Indian