Nowe posty

Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości -

Strony: [1] 2 3 ... 5
1
C/C++ / przyspieszenie programu
« dnia: 2014-02-17, 12:58:00 »
Witam!
Nadal cwicze zadania z projektu Euler.
W tym momencie pojawilo mi sie w glowie pytanie jak przyspieszyc dzialanie takich kodow.

Np. napisalam kod dla zadania nr 14 - Longest Collatz sequence:

#include
#include
int iteration(int value);
int count_iteration(int value);
using namespace std;

int main(){
    int time1, time2;
    time1 = clock(); // za czas1 zostanie wstawiony czas w milisekundach od momentu wlaczenia programu

    const unsigned int NUMBER = 1000000;
    int n = 10 ;
    int lenght;

    lenght = count_iteration(n);
    cout << " DLUGOSC LANCUCHA = " << lenght << endl;

    int max = 0;
    int iteraction = 0;
    int count = 0;

  for (int i = 1; i < NUMBER; i++){
    //cout << "Current iteration : "<< i << endl;
    iteraction = count_iteration(i);
        if (iteraction > max){
            max = iteraction;
            count=i;
           
        }

    }
 
    cout << "SZUKANA LICZBA = " << count << " DLUGOSC LANCUCHA = " << max << endl;

    time2 = clock();
    time2 = time2 - time1;
    cout << "CZAS WYKONYWANIA PROGRAMU " << time2 << "ms "<< endl;
}


int count_iteration(int value){
    int chain = 1;

    while(value!=1){

        value = iteration(value);
        chain++;
    }

return chain;
}

int iteration(int value){
    if(value%2==0)
        return (value/2);
    else
        return (3*value+1);
}
Niestety taki kod wykonuje sie ekstremalnie dlugo...
Od czego powinnam rozpoczac nauke optymalizacji kodu?

2
C/C++ / mały problem z pętlą
« dnia: 2014-02-15, 21:09:19 »
Świetna robota! Wielkie dzięki za pomoc! :)

3
C/C++ / mały problem z pętlą
« dnia: 2014-02-14, 17:18:16 »
Mam tablice z liczbami 6x6 i chciałabym znaleźć njwiększy iloczyn 3 liczb idąc tylko w stronę horyzontalną.
Np. mamy pierwszy wiersz liczb:
8, 2, 22, 97, 38, 15

Czyli szukam takich iloczynow: 8*2*22 ; 97*38*15, itd...
Nie moge poradzic sobie z pętlą, która również będzie szukała takich trójek liczb:
2*22*97; 22*97*38; itd;
wprowadziłam dodatkową pętlę do .. while, ale niestety nie otrzymalam zamierzonego efektu.
Czy mogłabym prosić o jakieś wskazówki?

Ooto moje wypociny:
int *grid[6][6];
    int tab[36] = {8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8, 49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43,    69, 48};

    int N = 6;
    for (int i = 0; i < 6; i++){
        for (int j = 0; j < 6; j++){
            grid[i][j] = &tab[i*N+j];
                        //cout << "T["<        }
    }
long int product = 1;
    long int final_product = 0;
    int counter = 0;
    int counter2 = 0;

    do{
    for (int i = 0; i < 6; i++){
        for (int j = counter2; j < 6; j++){
            product = product * (*grid[i][j]);
            cout << "P= " << product << endl;
            counter++;
            cout << "Licznik = " << counter << endl;
            if (counter%3 == 0){
                if(product > final_product){
                    final_product = product;
                }
                    product  = 1;
                    counter = 0;

            }
        }
            counter2++;
            cout << "COUNTER2 =" << counter2 << endl;
    }
}while (counter2==5);
    cout << "The biggest product = " << final_product;

4
C/C++ / konwersja
« dnia: 2014-02-12, 21:56:49 »
Cytat: pkraszewski
OT: Project Euler?
Tak :)

Ok, juz wiem. Prozstrzym sposobem jest wstawic elementy stringa do tablicy intów. :)

Jednakże chciałabym się spytać  szybkość. Z tego co poczytałam to biblioteka boost ma przyspieszyć działałanie naszych programów. Czy w tym przypadku tez tak się stanie?

5
C/C++ / konwersja
« dnia: 2014-02-12, 21:01:45 »
Wielkie dzięki chłopaki!
Robie sobie takie ćwiczenie:
Find the greatest product of five consecutive digits in the 1000-digit number.
Także napisałam taki kodzik:
#include
#include
#include
#include

using namespace std;

int main(){
    char * argv = "731671765313306";
using boost::lexical_cast;
    using boost::bad_lexical_cast;

    std::vector args;

    do
    {
        try
        {
            args.push_back(lexical_cast(*argv));
        }
        catch(const bad_lexical_cast &)
        {
            args.push_back(0);
        }
    }while(*++argv);

    int product = 1;
    int final_product = 0;
    int temp = 0;

    for (int i = 0; i <= args.size(); i++){
 int product = 1;
    int final_product = 0;
    int temp = 0;

    for (int i = 0; i <= args.size(); i++){
        product = product*args[i];
        if (i%4 == 0){
            if(product > final_product){
                temp = final_product;
                final_product = product;
                product = 1;
            }
        }
    }

    cout << final_product << endl;

}
Cytat: pkraszewski
Ale:  chcesz konwertować string na int,  czy nauczyć się castów? Bo jak to pierwsze, to strasznie na około to robisz...
O castach nawet nie slyszalam :) Jeszcze nie ten level :)
Próbowałam wybrnąć z tego problemów np. za pomocą funckji atoi:
std::string myString = "45";
int value = atoi(myString.c_str()); //value = 45
Jak widac caly string jest zamieniany na liczbe, a o to mi nie chodzi.
Jeśli jest jakieś prozstrze rozwiązanie mojego problemu, to będę niezmiernie wdzięczna za podpowiedź.

6
C/C++ / konwersja
« dnia: 2014-02-12, 09:57:36 »
Hej!
Chciałabym dokonać konwersji string na int. Znalazlam nastepujacy sposob za pomoca biblioteki BOOST:
#include
#include

char * argv = "1234578";
    using boost::lexical_cast;
    using boost::bad_lexical_cast;

    std::vector args;

    while (*++argv)
    {
        try
        {
            args.push_back(lexical_cast(*argv));
        }
        catch(const bad_lexical_cast &)
        {
            args.push_back(0);
        }
    }
 cout << "SIZE = " << args.size() << endl;
    for (int i = 0; i < args.size(); i++){
        cout << args[i] << endl;
    }
}
Nie wiem dlaczego ale wyniki zostaja wyswietlane od drugiego elementu oraz rozmiar wektora również jest o 1 element zbyt mały.
Również zbytnio nie rozumiem warunku while(*++argv). Czy to oznacza: wykonuj tak długo aż napotkasz ostatni element?

7
Języki skryptowe / [Python] klasa reverse
« dnia: 2014-01-03, 14:21:14 »
Bardzo dziekuję za pomoc. Teraz to jest wszystko jasne! :)

8
Języki skryptowe / [Python] klasa reverse
« dnia: 2014-01-03, 12:26:07 »
Rozpoczynam nauke Pythona i analizuje kod do odwrocenia znakow:

#!/usr/bin/python

class Reverse:
    def __init__(self,data):
        self.data = []
        self.index = len(data)
    def __iter__(self):
        return self
    def next(self):
        if self.index == 0:
            raise StopInteraction
        self.index = self.index - 1
        return self.data[self.index]


rev = Reverse('spam')
for char in rev:
    print char
otrzymalam nastepujacy blad, ktory chwilowo nie wiem jak poprawić:
Traceback (most recent call last):
  File "./reverse.py", line 18, in
    for char in rev:
  File "./reverse.py", line 13, in next
    return self.data[self.index]
IndexError: list index out of range
Mam równieź pytanie odnośnie pracy metody iter i next.
Jeśli dobrze rozumiem, to iter wywołuje wszystkie elemety tablicy data.
Jak jest wywolywana metoda next? Czy nie musze jej wywolac jawnie, next() ?

Będę niezmiernie wdzięczna za wyjaśnienie tych problemów.

9
C/C++ / [C++] odwolanie sie do funkcji z innej klasy
« dnia: 2013-03-21, 00:40:36 »
Jestem niezmiernie wdzieczna za pomc. Z tego przykladu b. duzo sie nauczylam. :)

10
C/C++ / [C++] odwolanie sie do funkcji z innej klasy
« dnia: 2013-03-20, 20:01:52 »
Witajcie!
Wlasnie rozpoczelam nauke programowania obiektowego.
Napisalma klase, ktora mnozy ple trojkata.
A teraz chcialabym napisac druga klase, ktora odwoluje sie do funkcji z poprzedniej klasy i oblicza objetosc prosopadloscianu.

#include 
using namespace  std;

class Prostokat
{
        private:
          int x,y,z;

        public:
          void dane (int, int);
          int pole(void) {return x*y;}
          int pole2(int, int);

};

void Prostokat:: dane(int a,int b)
{
        x=a;
        y=b;
}

int Prostokat:: pole2(int a,int b)
{
        x=a;
        y=b;
    return x*y;
}

class Prostopadloscian
{        
        private:
          int m,n,h;
        public:        
          void dane(int,int,int);
          int obj(void) {return Prostokat.pole2(m,n) * h;}
};        
         
void Prostopadloscian:: dane(int a, int b, int c)
{
        m=a;
        n=b;
        c=h;
}


int main()
{
        Prostokat a,b;
        a.dane(2,4);

        cout<        cout<<"Pole prostokata a= "<
      Prostopadloscian A;
       cout<}
Niestety program sie sypie juz na linijce:
 int obj(void) {return Prostokat.pole2(m,n) * h;}
Tzn. 'Prostokat' nie odnosi sie do wartosci.
Czy moglibyscie mi wskazac, jak poprawnie powinnam sie odwolac do funcji z innej klasy?

11
C/C++ / [c++] linijka z programu
« dnia: 2013-03-19, 00:56:52 »
Analizuje program, ktory zostal napisany obiktowo i mam pytanie odnosnie nastepujacej linii:

Ref ark = new Assigned;
Czy to tworzy obiekt klasy w sposob dynamiczny? No niestety nie wiem...

Chcialbym rowniez zapytac, jaka ksiazke polecanie do nauki programowania obiektowego. W szczegonie szukam czegos, co przyda sie w zastosowaniach matematycznych, fizycznych.

Mam Symfonie, ale przyklady o imie, nazwisko, itp do mnie nie docieraja.

12
C/C++ / Wczytywanie danych z pliku do wektora
« dnia: 2013-03-17, 22:43:32 »
Zgadza sie, za pomoca referencji zadzialalo od razu. :) A czy moglabym liczyc na pokazanie jak to powinno byc zrobione za pomoca wskaznikow?
Zawsze bede wiedziec na przyszlosc.

13
C/C++ / Wczytywanie danych z pliku do wektora
« dnia: 2013-03-17, 20:55:39 »
Wielkie dzieki.

Napisala dwie funkcje, jedna ktora wczytuje dane z pliku,a druga ktora je wyswietla:
#include 
#include
#include
#include
using namespace std;

void wczyt(const char *tekst,vector&wektor, int *s);
void wyswietl(vector&wektor,int *s);

int main()
{
        int s;
        vectorw;
        wczyt("dane.txt",w,&s);
        wyswietl(w,&s);
}

        void wczyt(const char *tekst,vector&dane,int *s)
        {
          ifstream plik(tekst);
          if(!plik)
          {
                cerr << "Brak pliku.";
          }
          string x;
          while(plik >> x)
                dane.push_back(x);
           s=dane.size();;
          plik.close();

        }

        void wyswietl(vector&dane, int*s)
        {
          for (int i=0; i          {
           cout<<"V["<          }
          cout<<"S="<       }
Jednakze po kompilacji wyskakuje mi blad:
wczyt_liczb_wekt.cpp: In function ‘void wczyt(const char*, std::vector >&, int*)’:
wczyt_liczb_wekt.cpp:33:14: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]

Czy zle wykorzystuje wskaznik do s?

14
C/C++ / Wczytywanie danych z pliku do wektora
« dnia: 2013-03-15, 23:35:40 »
Napisalam drobny rogramik, ktory wczytuje dane z pliku do wektora:

dane.txt
1 23 44 556
2 34 3
23 321 2 32
3 0 0 2 22
main.cpp
#include
#include
#include
#include

using namespace std;
int main()
{
    ifstream plik("dane.txt");
    if (! plik) cout<<"Brak pliku 'Data.txt' w katalogu z programem. Sproboj ponownie\\n";

    int s = 0;
    vector V_s;
    ifstream S("dane.txt");
    string l;
    while (getline(S, l)) V_s.push_back(l);
    for (int i = 0; i < V_s.size(); i++) s++;
    S.close();
//    V_s.clear();

    for (int i=0; i    {
      cout<<"V["<    }
}
W ten sposob otrzymuje:
V[0]=1 23 44 556
V[1]=2 34 3
V[2]=23 321 2 32
V[3]=3 0 0 2 22

Chcialabym zapytac w jaki sposob powinnam zrobic, aby kazdy element pliku dane.txt byl osobnym elementem wektora, tzn
V[0]=1
V[1]= 23
V[2] =44
V[3] = 556
V[4] = 2
itd.

Bede wdzieczna za jakiekolwiek wskazowki.

15
C/C++ / problem z kompilacja
« dnia: 2013-03-14, 08:44:18 »
Dodalam naglowek: #include "lapack.h"

i dokonalam kompilacji: g++ -Wall  lapack_tst.cpp -L/usr/lib -llapack -lblas -lm

Niestety nadal nie dziala, wyskakuje blad:
 fatal error: lapack.h: No such file or directory

Strony: [1] 2 3 ... 5