|
Informatyka UJ forum Rocznik 2005 - czyli najlepsze forum w sieci
|
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
|
Wysł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 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
|
Wysłany: Wto 15:50, 13 Cze 2006 Temat postu: |
|
|
heh ;]
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
urban
pijak
Dołączył: 12 Maj 2006
Posty: 109
Przeczytał: 0 tematów
|
Wysł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 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
|
Wysł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 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
|
Wysł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 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
|
Wysłany: Wto 17:52, 13 Cze 2006 Temat postu: |
|
|
wypas :lol:
|
|
Powrót do góry |
|
|
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
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
urban
pijak
Dołączył: 12 Maj 2006
Posty: 109
Przeczytał: 0 tematów
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
urban
pijak
Dołączył: 12 Maj 2006
Posty: 109
Przeczytał: 0 tematów
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
SZCZUR
żul
Dołączył: 09 Lis 2005
Posty: 603
Przeczytał: 0 tematów
|
Wysł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 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
|
Wysł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 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
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
cheater_
Orajt:)
Dołączył: 28 Lut 2006
Posty: 1022
Przeczytał: 0 tematów
|
Wysł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 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
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Ethlinn
Szatanica
Dołączył: 13 Lis 2005
Posty: 424
Przeczytał: 0 tematów
Skąd: Katowice
|
Wysł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 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
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
cheater_
Orajt:)
Dołączył: 28 Lut 2006
Posty: 1022
Przeczytał: 0 tematów
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Ethlinn
Szatanica
Dołączył: 13 Lis 2005
Posty: 424
Przeczytał: 0 tematów
Skąd: Katowice
|
Wysł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 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
|
Wysł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 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
|
Wysł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 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
|
Wysł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 |
|
|
|
|
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
|