Forum Informatyka UJ forum Strona Główna Informatyka UJ forum
Rocznik 2005 - czyli najlepsze forum w sieci
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

C++ na Athinie

 
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Algorytmy i Struktury Danych
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Skrobocik
[SKROBORANGA]



Dołączył: 29 Lis 2005
Posty: 2958
Przeczytał: 0 tematów

Skąd: Skarżysko , Kraków

PostWysłany: Wto 15:47, 13 Cze 2006    Temat postu: C++ na Athinie

MaZe na forum TCS napisał:
C/C++
Na Waszą prośbę jest dostępna możliwość submitowania rozwiązań w C/C++. Zamiast komunikatu OK, takie poprawne rozwiązania dostaną odpowiednio komunikaty “-C-” lub “C++”. Do zaliczenia ćwiczeń w trybie poprawkowym trzeba nadal oddać programy w Pascalu (kod “OK”).
Time limity są nadal takie jak dla Pascala, więc jak na C/C++ są wręcz olbrzymie!
Zaznaczam, że kompilator C/C++ będzie niedługo zmieniany (nowsza wersja RH 3.4.5-2, będzie w C wtedy też dostępna biblioteka matematyczna).

No to bajerka ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
oinopion
żul



Dołączył: 28 Lis 2005
Posty: 858
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Wto 15:50, 13 Cze 2006    Temat postu:

heh ;]
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
urban
pijak



Dołączył: 12 Maj 2006
Posty: 109
Przeczytał: 0 tematów


PostWysłany: Wto 16:43, 13 Cze 2006    Temat postu:

To ja mam od razu szybkie pytanie:
mam taki kod:
Kod:

// Krystian Kichewko [link widoczny dla zalogowanych]
#include <stdio.h>
#include <cstdlib>

//using namespace std;

long long fibonacci( int n )
{
    if ( n == 0 )
    {
        return 0;
    }       
   
    if ( n == 1 )
    {
        return 1;
    }
   
    long long f0 = 0;
    long long f1 = 1;
   
    long long temp;
   
    for( int i = 2; i <= n; i++ )
    {
        temp = f0 + f1;
        f0 = f1;
        f1 = temp;
    }
   
    return f1;
}


int main(int argc, char *argv[])
{
    int testCount;
    scanf( "%d", &testCount);
   
    int arg;
   
    for( int i = 0; i < testCount; i++ )
    {
        scanf( "%d", &arg );
        printf( "%Ld\n", fibonacci( arg ));
    }
   
   
    system("PAUSE");
    return 0;
   
}


no i tak:
u mnie jest to bledny kod: i daje za maly wynik dla fibonnaciego z 92 a na tcsie przeszlo:
15275 Z Tue, 13 Jun 2006 16:39:00 CEST C++

Czy ktos mi powie czemu zle obsluguje long longi? Uzywam Dev-c++ 5 beta opartej na gcc 3.4.x.

EDIT:

poszperalem troche i oto efekt:
Cytat:

# 64-bitowym typem danych całkowitych jest w C i C++ long long, zaś w Pascalu Int64
# Zmienne typu long long można wczytywać i wypisywać przy pomocy formatu %lld.
# Zmienne typu unsigned long long można wczytywać i wypisywać przy pomocy formatu %llu.
# Powyższe sposoby mogą nie działać na niektórych popularnych konfiguracjach (np. Dev-C++), ale u nas działają i zachęcamy do korzystania z nich.


Czyli co kurde dev-c++ jakis niefajny?
Ktos poleci cos pod winde? jakies ide zgodne z athina?[/b]


Ostatnio zmieniony przez urban dnia Wto 16:48, 13 Cze 2006, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fen
zielony żul



Dołączył: 22 Lut 2006
Posty: 946
Przeczytał: 0 tematów

Skąd: Bochnia

PostWysłany: Wto 16:48, 13 Cze 2006    Temat postu:

ale fajnie! A już się bałem, że nie będe miał co robić przez wakacje :)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Skrobocik
[SKROBORANGA]



Dołączył: 29 Lis 2005
Posty: 2958
Przeczytał: 0 tematów

Skąd: Skarżysko , Kraków

PostWysłany: Wto 17:34, 13 Cze 2006    Temat postu:

urban napisał:
(...)Ktos poleci cos pod winde? jakies ide zgodne z athina?[/b]

Kurdę, nawet nie wiedziałem, że takie sceny może Dev-Cpp robić. Jak ktoś ma jakieś namiary, to niech zarzuca jak najszybciej ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
chlebek
alkoholik



Dołączył: 04 Lut 2006
Posty: 556
Przeczytał: 0 tematów

Skąd: Siedlce\Kraków

PostWysłany: Wto 17:52, 13 Cze 2006    Temat postu:

wypas :lol:
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Rogal
Zjeb z kaszanką



Dołączył: 13 Mar 2006
Posty: 1745
Przeczytał: 0 tematów

Skąd: koło podbiegunowe

PostWysłany: Wto 18:48, 13 Cze 2006    Temat postu:

@Urban, Skrobocik: Dev-Cpp nie ma nic do tego, to tylko środowisko. To tak jakbyś winił Programmers Notepad albo GIDE Pascala za to, że program źle działa.

A ponieważ Dev pracuje na tym samym kompilatorze co Athina (no dobra, mogą się różnić wersją, ale to raczej nie ma znaczenia w tym przypadku) to wina nie leży też po stronie kompilatora.

Co mogę sugerować to albo wpisać w Dev-ie takie parametry kompilacji jakie są pod Athiną i spróbować wtedy (wątpię żeby coś pomogło), albo testować programy pod Linuxem - bo to najprawdopodobniej Windows jest winny tym błędom.

edited: można też znaleść parametry jakich należy używać pod Windowsem do obsługi logów w scanf / printf, albo zamiast nich używać cin / cout i to jest imho najlepsze wyjście
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
urban
pijak



Dołączył: 12 Maj 2006
Posty: 109
Przeczytał: 0 tematów


PostWysłany: Wto 18:51, 13 Cze 2006    Temat postu:

Dobra to ja znowu cos szukalem i znalzlem rozwiazanie:

Cytat:

Well, I finally played around with mingw32, and found that the following works. %I64 is the key (even though the documentation that I could find for dev-cpp seemed to indicate that %ll would work).


/* Use of 64-bit unsigned ints with mingw32 gcc */

#include <stdio.h>
typedef long long Long;
int main(void)
{
long long juul = 123456789012345678LL;
unsigned char *pjuul;
int i;

printf("With dev-cpp mingw32 gcc:\n\n");
printf("sizeof(Long) = %d\n", sizeof (Long));
printf("juuld: %I64d\n",juul);
printf("juulx: %016I64X\n",juul);
pjuul = (char *) &juul;
printf("juulb: ");
for (i = 0;i < sizeof(juul); i++) printf("%02X",*(pjuul + i));
printf("\n");
system("pause");
return 0;



The results are

With dev-cpp mingw32 gcc:

sizeof(Long) = 8
juuld: 123456789012345678
juulx: 01B69B4BA630F34E
juulb: 4EF330A64B9BB601


A tu link do odpowiedniego tematu:
[link widoczny dla zalogowanych]

A teraz odemnie, wyniki z zadania Z:

Kod:

2
3
2
2
92
7540113804746346429
1642909629


sposob wypisywania:

Kod:

        printf( "%I64d\n", fibonacci( arg ));
        printf( "%lld\n", fibonacci( arg ));


Czyli trzeba uzywac I64.

UWAGA kod z I84 nie przchodzi:
Cytat:
15285 Z Tue, 13 Jun 2006 18:50:05 CEST ANS


Czyli cos hujowy ten dev-c++ zobacze ta normalna czworke

EDIT
platforma winxp
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
urban
pijak



Dołączył: 12 Maj 2006
Posty: 109
Przeczytał: 0 tematów


PostWysłany: Wto 18:55, 13 Cze 2006    Temat postu:

@Rogal
w sumie sie potwierdzilo ze to wina wina. Dzieki za info.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
SZCZUR
żul



Dołączył: 09 Lis 2005
Posty: 603
Przeczytał: 0 tematów


PostWysłany: Śro 10:54, 14 Cze 2006    Temat postu:

mingw jest "identyczny" z GCC
ale jego standardowa biblioteka jest "windowsowa" (chyba taka sama jak w VC)

[link widoczny dla zalogowanych]
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
chlebek
alkoholik



Dołączył: 04 Lut 2006
Posty: 556
Przeczytał: 0 tematów

Skąd: Siedlce\Kraków

PostWysłany: Czw 12:36, 15 Cze 2006    Temat postu:

Jak zrobic w DEV C++, zeby wczytac dane z input tak jak we free pascalu i wynik dawal output ?? Dzieki za pomoc
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
kafex
zielony żul



Dołączył: 28 Mar 2006
Posty: 1458
Przeczytał: 0 tematów

Skąd: Zawiercie

PostWysłany: Nie 23:04, 02 Lip 2006    Temat postu:

Ludzie może wyjaśnicie mi pewną ciekawostkę...sposobiłem się właśnie do wysłania R5 w C++ jako inaguracje wakacyjnego ASD a tu zonk : opcja submitowania zdjęta z konta... z tego co wiem nie tylko ja tak mam( może wszyscy ? )...ktoś wie może o co chodzi ? wszak są ludzie, którzy przez wakacje mają pisać i oddawać programy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
cheater_
Orajt:)



Dołączył: 28 Lut 2006
Posty: 1022
Przeczytał: 0 tematów


PostWysłany: Pon 15:47, 03 Lip 2006    Temat postu:

Pewnie robią jakiś maintenance, przypuszaczam że submitowanie wróci niedługo ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Rogal
Zjeb z kaszanką



Dołączył: 13 Mar 2006
Posty: 1745
Przeczytał: 0 tematów

Skąd: koło podbiegunowe

PostWysłany: Pon 22:54, 03 Lip 2006    Temat postu:

Submitowanie jest już znów dostępne.

Ten kolorek dla c++ nie jest tak pięknie zielony jak ten dla ok, ale też może być :wink:
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Ethlinn
Szatanica



Dołączył: 13 Lis 2005
Posty: 424
Przeczytał: 0 tematów

Skąd: Katowice

PostWysłany: Wto 15:38, 04 Lip 2006    Temat postu:

a ja mam taki dziwny problem. Wlasnie pisalam sobie slynna R3 w C++ i okazalo sie, ze nijak nie chce mi przejsc tablica miliona elementow. Przy stu tysiacach jest okej, ale jak tylko dopisze jedno zero wiecej to pada mi wszystko. Kompiluje, owszem, ale przy wykonywaniu za nim cokolwiek sie zrobi wyskakuje, ze program wykonal nieprawidlowa opercaje. Ktos moze wie, o co w tym chodzi?
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Pawel Str.
pijak



Dołączył: 06 Lut 2006
Posty: 429
Przeczytał: 0 tematów

Skąd: Ze starszego roku / Z Gorlic

PostWysłany: Wto 15:50, 04 Lip 2006    Temat postu:

Spróbuj zrobić alokację dynamiczną.

Czyli zamiast
int tablica[10000000]

zrób int * tablica;

tablica = new int[1000000];
(...)

delete [] tablica;

Jeżeli to pomoże, to chyba wiem, gdzie problem.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
cheater_
Orajt:)



Dołączył: 28 Lut 2006
Posty: 1022
Przeczytał: 0 tematów


PostWysłany: Wto 15:55, 04 Lip 2006    Temat postu:

Albo prościej i wydajniej (bo ktoś mi mówił że dostęp do sterty jest jakiś wolniejszy)- nie deklaruj tablicy w mainie, tylko przed nim, tak żeby była globalna :) Bo jak deklarujesz w mainie, to w zasadzie deklarujesz lokalnie, a tego stos nie zdzierży ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Ethlinn
Szatanica



Dołączył: 13 Lis 2005
Posty: 424
Przeczytał: 0 tematów

Skąd: Katowice

PostWysłany: Czw 11:12, 06 Lip 2006    Temat postu:

Dzieki :). Alokacja dynamiczna pomogla :). Co nie zmienia faktu, ze nadal mam ANSa :P. Heh...
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
muciu
pijak



Dołączył: 05 Gru 2005
Posty: 86
Przeczytał: 0 tematów

Skąd: Krynica-Zdrój

PostWysłany: Czw 0:14, 03 Sie 2006    Temat postu:

Ja mam taki mały/ciekawy/głupi problem:
napisalem sobie zadanko "C" w C++ i gdy skompiluje go w Dev-C++ bez opcji "-O2" to łądnie działa, ale ponieważ na Athinie programy są kompilowane z tą opcją - dostaje: S11. W domu gdy włączylem tę opcję w kompilatorze również sie wysypuje.
Czy wie ktos za co jest więc odpowiedzialna ta opcja??
PS. Znalazłem ciekawy przykład (przynajmniej u mnie na kompie)
Kod:

#include <iostream>
using namespace std;
class Test{
      public:
         Test* next;
         Test* prev;  //dla sprawdzenia wykomentowac tę linijke
         char nazwa[9];
         Test(char * nazwa_){
                int i = 0;
                while(nazwa[i]=nazwa_[i++]);
         }
};

int main(){
   Test * glowa = new Test("test");
   cout<<"NAZWA: "<<glowa->nazwa<<endl;
}


Gdy wykomentuje 6 linijkę - program wyswietla "NAZWA: xtest", gdy pozostawie tak jak jest: "NAZWA: ", a gdy skompiluje bez opcji -O2 tedy wyswietla bez względu na wykomentowanie 6'tej linijki: "NAZWA: test"... normalnie mnie coś trafia!! Pomocy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Pawel Str.
pijak



Dołączył: 06 Lut 2006
Posty: 429
Przeczytał: 0 tematów

Skąd: Ze starszego roku / Z Gorlic

PostWysłany: Czw 0:39, 03 Sie 2006    Temat postu:

-On włącza optymalizacje:
n=0 brak optymalizacji
n=1 proste optymalizacje
n=2 trochę bardziej złożone optymalizacje, może zwiększyć rozmiar binarki, ale nadal bezpieczne optymalizacje.
n=3 agresywna optymalizacja, czasami może zaszkodzić.
n=S optymalizuj pod kątem romiaru binarki.

-O2 sprawia, że czasami w pamięci jest mniej zer - nie wiem, czy wyłącza niewymagane zerowania, czy inaczej układa zmienne w pamięci. W każdym razie jeżeli 02 spowodowało SEGV, to kod jest błędny, a bez O2 działał przez przypadek (tj trafiał na jakieś zero w pamięci, które było tam tylko ze względu na sposób przydziału pamięci przez kompilator). A co do Twojego kodu:

nazwa[i]=nazwa_[i++] jest kodem niejednoznacznym.
Nie wiadomo, które i (przed czy po inkrementacji) jest używane z lewej strony.
Z jakiś powodów (śmieci z inicjalizacji) nazwa[0] ma na początku wartość x. Bez 02 kompilator ułożył sobie to w następujący kod (idea, naprawdę wygląda to inaczej):

mov EAX,0 ; //W EAX będzie I
mov EBX, nazwa_ + EAX; // pobierz nazwa_[i]
mov nazwa+EAX, EBX;// zapisz nazwa[i]
inc EAX.

Z O2 użył innego algorytmu rozkładania wyrażeń i zrobił coś takiego:
mov EAX,0 ; //W EAX będzie I
mov EBX, nazwa_ + EAX; // pobierz nazwa_[i]
inc EAX.// i++
mov nazwa+EAX, EBX;// zapisz nazwa[i]

Przy czym zależnie od tego, czy musiał rezerwować pamięć na prev czy nie, wyszedł albo taki wynik, albo taki sam jak poprzednio.

dlatego nazwa[0] nie zostało zastępione i zostało tam stare 'x'.



Mrozek na wykładzie mówił, że a[i]=b[i++] jest niejednoznaczne i nie powinno być używane :-)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
muciu
pijak



Dołączył: 05 Gru 2005
Posty: 86
Przeczytał: 0 tematów

Skąd: Krynica-Zdrój

PostWysłany: Czw 23:11, 03 Sie 2006    Temat postu:

Heh ... faktycznie! W dupe dało to inkremetnowanie wewnątrz while'a noi odnalazłem wyraźne zapiski w Gręboszu że tak robić nie wolno - teraz to będe pamiętał. A przy okazji zadanko przeszlo na athinie:)
Dzięki za fachową pomoc!
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Algorytmy i Struktury Danych Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin