Skocz do zawartości

Polar

Stały użytkownik
  • Postów

    1875
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    4

Treść opublikowana przez Polar

  1. Raczej tak to powinno wyglądać class A {public: char pola[15][15];};class B { char zrudlo[15][15]; public: void wypelnij(char sz[15][15]) { char * wskaznik1 = &zrudlo[0][0]; char * wskaznik2 = &sz[0][0]; for ( int i = 0; i < 15; i++) *wskaznik1++ = *wskaznik2++; }};int main() { A sz; B m; m.wypelnij(sz.pola); return 0;} A tak wygląda na konkretnym przekładzie. #include <iostream>#include <conio>class A {public:char pola[15][15]; void takie() // { // to bedzie pozniej jako dowod ze wpis jest wykonany pola[0][0]= 'X'; // pola[0][1]= 'Z'; // }};class B {char zrodlo[15][15];public: void wypelnij(char sz[][15]) { char * wskaznik = &zrodlo[0][0]; // to jest ustawienie wskaznika na tablice zrodlo char * wskaznik2 = &sz[0][0]; for ( int i = 0; i < 15; i++) wskaznik[i] = wskaznik2[i]; //kopiowanie wszystkiego z sz[][] // do zrodlo[][] cout << "pokazanie wyslanej z klasy A do klasy B litery: "<< zrodlo[0][0]; cout << "npokazanie wyslanej z klasy A do klasy B litery: "<< zrodlo[0][1]; //tylko tu mozna sprawdzic czy nastapil zapis do np. char zrodlo [0][1] i [0][0] }};int main() { A sz; B m , k; sz.takie(); // to jest wywolanie tego wczesniejszego dowodu cout << "wpisanie do tablicy litery X i jej odczyt z main : " << sz.pola[0][0] << endl; // a to jest pokazanie ze zapis faktycznie wykonal sie na tablicy char pola[0][0] m.wypelnij(sz.pola); // wywolanie funkcji w klasie B ze zmienionym parametrem klasy A //cout << k.zrodlo[0][0]; //tak by mozna bylo gdyby w class B tablica char zrodlo[15][15] byla public getch(); return 0;} Tablicy wielowymiarowej nie przesyła się do funkcji jako wskaźnika ani nie odbiera się przesyła się ją jako nazwę tablicy i tak samo odbiera a potem wewnątrz funkcji ustawia się na nią wskaźnik i operuje nim , albo niekoniecznie. Jeśli jesteś początkującym to nie zajmuj się takimi rzeczami tylko podszkol się w podstawach takich jak tablice / tablice wielowymiarowe , wartości w argumentach funkcji i inne. Bo nic się nie nauczysz. A takie rzeczy : m.wypelnij(&sz.pola); zrudlo=sz;Nie wiem co chciałeś osiagnąć przez to drugie (zrudlo=sz;) ale widać, że chyba nie rozumiesz tablic i wskaźników do końca. :)
  2. Polar

    Za duża liczba...

    Jakiś ułamek sekundy 2^31 == 2147483648 ... od razu widać że dzieli się przez 2 czyli na pewno nie jest LP :) W sumie tu nie chodzi nawet o sprzęt tylko o dobrze napisany algorytm który już przy tych powiedzmy najmniejszych dzielnikach 2,3,5,7,11,13,17 to powie :x
  3. Polar

    Za duża liczba...

    No faktycznie zapomniałem że Pascal jest jeszcze na 16 bitach , kompilator :D. Ehh te stare czasy :roll:
  4. Polar

    Za duża liczba...

    A dlaczego tylko do 2^30 ??? . Czy chodzi ci o moc procesora czy o typ liczbowy ?. Jakby co to w c++ w bibliotece stdint.h jest coś takiego jak int64 (–2^63..2^63–1) a także uint64 (0..2^64-1) Dodajesz na początku #include <stdint> , a potem w programie delkarujesz sobie int64_t nazwa_zmiennej ; Nie wiem jaki masz algorytm ale obliczenie czy 2^63 jest czy nie jest pierwszą trochę by trwało :) .
  5. Musiałby nic nie robić tylko czytać książki do programowania całymi dniami i nocami a i tak nie zostanie biegłym. A dlaczego ??? Dlatego że biegły programista to właśnie taki co ma duże doświadczenie. Taki co nie ma doświadczenia nie jest biegły. Żeby być biegłym potrzeba wielu lat ciężkiej pracy na różnych projektach :P Gdzieś słyszałem że programista w C++ po dwóch latach sądzi że wie wszystko po 4 latach sądzi że już nic nie wie a dopiero po 6 latach staje się prawdziwym programistą.
  6. Zgadza się, najlepiej zacząć od C++ stopniowo i powoli oczywiście. Jeśli jesteś maniakiem to możesz zacząć też od c a potem przejść na c++ , ale w sumie i tak będziesz tylko używać konstrukcji z c++ , które w porównaniu do c są łatwiejsze i skuteczniejsze. Potem będziesz mógł spróbować coś z .NET powiedzmy c++ , java albo na c# ( bo w sumie będziesz już znać te języki z nauki c++ ) Polecam książki , na początek : Symfonia C++ , Thinking in C++ , potem dopiero Pasja C++ , i inne jakieś... No to jest kilka ładnych lat nauki przed tobą... :)
  7. Parę rad na przyszłość : 1 #include <iostream>#include <fstream>#include <string>using namespace std; Pod dyrektywami zawsze dodawaj using namespace std ; dzięki temu nie będziesz musiał pisać std:: na początku np. strumieni cin i cout , co mocno zwiększy czytelność kodu i szybkość pisania. 2 std::cout<< "********** menu **********n";std::cout << "[1] Read from a filen";std::cout << "[2] Enter data from a keyboardn";std::cout << "[3] Exit programn"; Nie wal tyle cout bo to można załatwić jednym , co jest znacznie czytelniejsze i przejemniejsze dla oka jeszcze w kompilatorze. cout << "********** menu **********n" "[1] Read from a filen" "[2] Enter data from a keyboardn" "[3] Exit programn"; 3. Stosuj raczej // << endl ; na przejście do nowej lini bo jest czytelniejsze, a jak jest dużo // 'n' to czasami jest ciężko połapać. 4. Nie wiem czy robisz (bo forum ściąga wszystko do lewej strony ) dużo wcięć bo jak wszyskto zaczyna się od lewej strony to ciężko się połapać o co chodzi. 5. Funkcję int main() zawsze staraj się dawać jako pierwszą . Nie dlatego że tam musi stać ale dlatego że od niej wszystko się zaczyna ( czyli wywoływanie pozostałych funkcji ) ktoś chce sprawdzić co ona uruchamia to musi jechać na sam dół . :lol: 6. Zawsze oddzielaj wszystkie funkcje aby można się było łatwo połapać która gdzie się kończy a gdzie zaczyna następna: //-------------------------------------------------------------------------------void text(){ cout << "Enter degree of the polynomial (max " << max << ")n";}//-------------------------------------------------------------------------------void manual(){int string1[25];cout << "Enter degree of the polynomial (max " << max << ")n";cin >> degree; for(int i=0; i<=degree; i++) { cout << "Enter coefficient for x^" <<i<< "n"; cin>>string1[i]; }strncpy(string,string1,25);} //-------------------------------------------------------------------------------
  8. Plik nagłówkowy dos.h :)
  9. A widzisz jak Diabeł potrafi kusić , lepiej nie rób tego bo możesz sobie totalnie s.p.i.e.r.d.o.l.i.ć. kartę :x .
  10. Mam takie pytanie odnośnie tego C#asza jaki jest tu odpowiednik funkcji getch() czyli czekanie na naciśnięcie klawisza ??? Bo bym se oblukał , ale nie chce mi się szukać :lol: Albo lepiej kupić książkę C# dla pasjonatów C++ hehe warto się pouczyć :P
  11. Na C# po wpisanie takiego kodu zamiana się nie dokona. Chociaż praktycznie nie znam tego języka ( my first time 8) ) ale nie było tak trudno to sprawdzić. using System;namespace Project1{ public class Ex1 { public static void Main(string[] args) { int x = 123, y = 456; Console.WriteLine( "najpierw x ="+ x + " a y = " + y ); x ^= y ^= x ^= y; Console.WriteLine( "a teraz x ="+ x + " a y = " + y ); } }} A takie jest rezultat, czyli ta zamiana tu nie działa. najpierw x =123 a y = 456a teraz x =0 a y = 123 Oczywiście w C++ wszystko jest bajecznie zgodne. #include<conio.h>#include<iostream.h>//------------------------------------------------------------------------------main(){int x = 123, y = 456; cout << "najpierw x = " << x << " y = " << y << endl; x ^= y ^= x ^= y; cout << "a potem x = " << x << " y = " << y;getch();}//------------------------------------------------------------------------------ Wynik jest jak to powszechnie wiadomo spodziewany :) .
  12. Znalazłem jeszcze coś innego funkcję ecvt() która zmienia ułamek na na string i od razu zapisuje jako całość , trzeba skonwetować na liczbe, dokładność zamiany jest na sztywno. :x W sumie to tylko mój wcześniejszy zmodyfikowany kod o ecvt(). #include<conio.h>#include<iostream.h>#include<math.h>#include<stdlib.h>main(){double ulamek, calosc; // zmienne do modfdouble liczba = 123.456; // liczbaint pozycja, znak;char * string;ulamek = modf(liczba , &calosc);cout << "liczba = " << liczba << "ncalosc = " << calosc << "nulamek = " << ulamek;string = ecvt(ulamek, 3 , &pozycja , &znak); // zamienia double na stringcout << endl << "calosc z ulamka = " << string;getch();}
  13. Różnica jest subtelna, taka że { char * wskaźnik = "coś tam" } zostaje zapisane w pamięci w sposób ciągły jedno za drugim. A { char tablica [] = "coś tam" } jako stos. A wiadomo że nazwa tablicy jest jednocześnie adresem jej zerowego elementu czyli zapisy te oznaczją to samo , różnica jest tylko w sposobie zapisu ( ułożenia ) elementów w pamięci.
  14. Polar

    Zapchany RAM w XP

    Człowieku i ty się jeszcze dziwisz ??? 8O :o Przecież taka mieszanka rozwali każdy komp , głównie symantec + creative :o
  15. Ja bym to zrobił tak ( ale druga liczba "ulamek" wyjdzie w przedziale od 0 do 1 ) : Twój kod działal by podobnie gdybyś zamiast int czesc_ulamkowa dał float czesc_ulamkowa.
  16. ok dzieki za pomoc chlopaki wszstkiego nie wiedzialem :P te z poloceniem shutdown sie przydaly :P
  17. dajesz na NARZĘDZIA/OPCJE zakładka ZABEZPIECZENIA i tam odznaczasz pole NIE ZEZWALAJ NA ZAPISYWANIE ZAŁĄCZNIKÓW.....
  18. potrzebny mi spis komend do sterowaniem systemu , komendy wysyłane do pliku rundll32.exe np przez linię poleceń , np restart systemu itd...
  19. tu masz link do naprawdę dobrego FAQ ... http://80.53.21.162/~speed/download/faq_builder.rar
  20. CMI8738 4CH c-media ta karta to wielki szit i nic dodać nic ująć :P
  21. do gier tylko i wyłącznie 53.03 i nowsze bo dają najlepszą płynność i są optymalizowane do gier a nie do testów i tak ma być , nie tylko do fx , dla każdej karty nvidia co ma dx8.0 w górę :P
  22. Polar

    Kompilator asembler

    http://80.53.21.162/~speed/download/Assembler.exe z mojej strony wersja 'dla windows' można powiedzieć :>
  23. Polar

    Potrzebna pomoc!

    moge ci zrobić ten program ale muszę znać ten problem bardziej szczegółowo bo to co na pisałeś nie jest do końca jasne coś mnij więcej napisałem ale nie wiem czy to dokładnie o to chodzi jak coś się będzie nie zgadzać to na pisz co bo to dopiero wersja beta :)
  24. one też są odmianami c , tak jak java również :wink:
  25. Polar

    Tabela w winAPI

    chodzi o StringGrid albo DrawGrid ale w winapi to nie wiem :lol:
×
×
  • Dodaj nową pozycję...