Skocz do zawartości

kfgz

Stały użytkownik
  • Postów

    1641
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    2

Treść opublikowana przez kfgz

  1. Wilczurek, oba zadania są banalnie proste (aż do bólu) 1. a = 4/3 m/s2 - wiadomo. Wystarczy tylko podstawić do wzoru s = (a*t^2)/2 2. a = delta_v / delta_t. Delta_v i a masz dane. Nie rozumiem więc jaki masz problem z przekształceniem wzoru.
  2. Twój niebieski i biały to na rysunku zielony i czerwony.
  3. Jeżeli nie musisz tego zaprogramować to polecam JNNS. Jak coś to pisz na PW.
  4. Możesz ręcznie połączyć za pomocą madedit. Ten progs ma możliwość pracy w trybie kolumn.
  5. kfgz

    Sac2wav

    Witam, Zgodnie z obietnicą z tematu http://forum.purepc.pl/Programowanie-f35/s...at-t292776.html prezentuję mój wynalazek. Pliki do konwersji można pobrać ze strony http://www.iris.edu/hq/ssn/events Download Kompilacja pod windowsem wymaga mingw. Oczywiście binarki dołączyłem (kompilowane pod linuksem przez i486-mingw32-g++ :/). Zapraszam do testów. Program udostępniam na licencji GPLv3. P.S. W kwietniu jak dobrze pójdzie to dopiszę jeszcze wersję, w której wszystkie pliki wpisane do pliku jako lista zostaną przekonwertowane do jednego, dużego pliku wav. Już napisałem ;]
  6. Dziękować. Działa tak jak chciałem. Końcowy kod: #include <stdlib.h>#include <stdio.h>#include <iostream>float *floatt;int main(int argc, char *argv[]) { int k, i, j = 1000000000; // j = 1GB for(i = 0; i < 6; i++) { try {floatt = new float [j];} catch (const std::bad_alloc& e) { printf("\nError: out of RAM!"); exit(1); } for (k = 0; k < j; k++) { floatt[k] = 2.35; // 4GB RAM alloc } printf("\nLoop: %d", i + 1); delete [] floatt; } return(0);}
  7. Wersja alternatywna: http://www.youtube.com/watch?v=JTfHxqwYUMk
  8. Witam, Jak napisać sprawdzenie czy jest jeszcze wolna pamięć żeby zainicjować tablicę? #include <stdlib.h>#include <stdio.h>float *floatt;int main(int argc, char *argv[]) { int k, i, j = 1000000000; // j = 1GB for(i = 0; i < 6; i++) { if (!(floatt = new float [j])) { printf ("\n\nError: out of RAM!\n\n"); exit(1); } else { for (k = 0; k < j; k++) if(!(floatt[k] = 2.35)) {printf ("\n\nError: out of RAM!\n\n");exit(1);}// 4GB RAM alloc printf("\nLoop: %d", i + 1); } //delete [] floatt; } return(0);} Powyższy kod kończy się błędem terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Oczywiście delete [] floatt; zakomentowałem z premedytacją.
  9. #include <iostream>using namespace std;int main() { double zmienna; cout << "Podaj zmienną: "; do { if (cin.fail()) { cin.clear(); while (cin.peek() != '\n') cin.get(); } cin >> zmienna; if (cin.fail()) cout << "Błąd, to nie jest liczba. Podaj jeszcze raz zmienną: "; } while (cin.fail()); cout << endl << zmienna << endl; return 0;}
  10. Witam, Otóż dane do tablicy arr wczytuję z pliku. unsigned char *arr; FILE *inp; int file_size; char t; int pos = 0; inp = fopen(path, "rb"); fseek(inp, 0, SEEK_END); file_size = ftell(inp); fseek(inp, 0, SEEK_SET); arr = new unsigned char [file_size]; while(pos < file_size) { fscanf(inp, "%c", &t); arr[pos] = t; pos++; } fclose(inp); Rozmiar pojedynczej danej to 4 bajty. Te 4 bajty są w tablicy znakowej jak widać powyżej i stanowią zakodowaną zmienną typu float. Funkcja HexToFloat przekształca te 4 bajty na zmienną float typu używalnego do dalszych obliczeń i zapisuje ją w tablicy floatt. Jak widać w funkcji HexToFloat jest trochę mnożenia, dzielenia, dodawania, odejmowania oraz jedna operacja na bitach (&). Marzy mi się coś w miarę prostego konstrukcyjnie i szybkiego. Mam w zasadzie dwa pomysły na optymalizację (czyt. napisanie tej funkcji od zera). Pierwszy pomysł (chyba najbardziej pożądany) to odczyt danych z pliku w taki sposób, żeby od razu dane nadawały się do obliczeń. Drugi pomysł polega na tym, że dane odczytuję do tablicy znakowej (tak jak w kodzie powyżej) ale robię taki trik, że pod adres tablicy floatt wpisuję odpowiednie dane z tablicy arr. W BASICu kiedyś się tak bawiłem za pomocą POKE i PEEK i działało super. Pomożecie? Oczywiście sam też będę próbował coś spłodzić, może zdążę do poniedziałku ;/ Aha, to nie jest żadna praca na studia czy coś w ten deseń. Piszę program z własnej i nie przymuszonej woli i jak go skończę to nie omieszkam opublikować na tym forum i na sourceforge. #include <math.h>#include <stdio.h>#define expbias 127#define bitc 8#define bytec 3void GenPow1(float *tab, int tabsize) { int i; for(i = 0; i < tabsize; i++) tab[i] = pow(2, -127 + i);}void GenPow2(float *tab, int tabsize) { int i; for(i = 0; i < tabsize; i++) tab[i] = pow(2, 7 - i);}void HexToFloat(unsigned char *tab, float *ft, float *pow1, float *pow2, int pos, int tabsize) { unsigned char outtab[32], tt[4]; int i, j, k, idx, tmp1; float sign, frac = 0, exp = 0; for(k = 0; k < tabsize; k++) { tt[0] = tab[0 + pos]; tt[1] = tab[1 + pos]; tt[2] = tab[2 + pos]; tt[3] = tab[3 + pos]; for(i = bytec, idx = 0; i >= 0; i--) for(j = 0; j < bitc; j++) { tmp1 = pow1[127 + j]; outtab[idx] = (tt[i] & tmp1) / tmp1; idx++; } sign = pow(-1, outtab[31]); for(i = 30; i >= 23; i--) exp += outtab[i] * pow2[30 - i]; exp -= expbias; exp = pow(2, exp); for(i = 22; i >= 0; i--) frac += outtab[i] * pow2[30 - i]; frac += 1; ft[k] = sign * exp * frac; exp = 0; frac = 0; pos += 4; }}int main() { float pow1[256], pow2[31], floatt[2]; int i, smpc = 2, offset = 0; unsigned char arr[8] = {0x3E, 0xAA, 0xAA, 0xAB, 0xAB, 0xAA, 0xAA, 0x3E}; GenPow1(pow1, 256); GenPow2(pow2, 31); HexToFloat(arr, floatt, pow1, pow2, offset, smpc); for(i = 0; i < smpc; i++) printf("%e\n", floatt[i]); return(0);} P.S. Przy tworzeniu funkcji HexToFloat korzystałem z http://en.wikipedia.org/wiki/IEEE_754-1985...recision_32-bit oraz http://babbage.cs.qc.edu/IEEE-754/32bit.html EDIT: Temat uważam za zamknięty :D #include <stdio.h>#define floatsize 4void HexToFloat(float *address, unsigned char *byte, int idx) { int i; unsigned char *pByte; for(i = 0; i < floatsize; i++) { pByte = (unsigned char*)address + i; *pByte = byte[3 - i + idx]; } }int main() { float floatt[3] = {1.0, 2.0, 3.0}; int i, smpc = 2, offset = 0; unsigned char arr[8] = {0xAB, 0xAA, 0xAA, 0x3E, 0x3E, 0xAA, 0xAA, 0xAB}; for(i = 0; i < smpc; i++) HexToFloat(&floatt[i], arr, floatsize * i + offset); for(i = 0; i <= 2; i++) printf("%e\n", floatt[i]); return(0);} Drugi algorytmy jest 167 razy szybszy niż pierwszy. To się nazywa optymalizacja ;)
  11. Hint: używaj tablic i pętli, a kod stanie się bardziej zwięzły i przejrzysty.
  12. kfgz

    F1 Sezon 2008

    Wystarczy, że tylko raz wytrzyma 3 wyścigi + kwalifikacje. Potem co 2 wyścigi może być zmieniany.
  13. kfgz

    Hp Dv9000

    MCP51 = nForce 410/430 czyli może te sterowniki będą pasować: http://www.gigabyte.com.tw/Support/Motherb...?ProductID=2283 http://www.techspot.com/drivers/driver/fil...ormation/11396/ a jeśli nie to szukaj sterowników sata dla płyt na chipsecie nFroce 410/430 (głównie socket AM2 ale 775 też). Sprawdź też ustawienia w BIOSie tak jak szpachla napisał, chociaż z reguły w Hp'kach nie możliwości zmiany trybu pracy dysku na IDE.
  14. kfgz

    Hp Dv9000

    W takim razie musisz zrobić mały rekonesans i zobaczyć jaki dokładnie jest chipset w twoim laptopie. Przydatna do tego będzie dystrybucja live cd np sysresccd lub parted magic. Po uruchomieniu wpisz w konsoli: lspci | less i podaj co "wypluła" konsola.
  15. kfgz

    Hp Dv9000

    Chyba jednak nie te stery zapodałem. Spróbuj któregoś z poniższych: http://www.gigabyte.com.tw/Support/Motherb...?ProductID=2817 - NVIDIA MCP72/78 SATA AHCI Driver http://www.gigabyte.com.tw/Support/Motherb...?ProductID=2438 - NVIDIA SATA RAID Driver http://www.gigabyte.com.tw/Support/Motherb...?ProductID=2438 - NVIDIA MCP55 SATA RAID Driver Oczywiście wybierz wersję dla Visty.
  16. kfgz

    Hp Dv9000

    Pobierz ten sterownik: http://h10025.www1.hp.com/ewfrf/wc/softwar...product=3388272 Uruchom instalację i po rozpakowaniu plików zakończ ją. Interesujące pliki znajdziesz w katalogu c:\swsetup\SP36079\WinVista32\IDE\WinVista.
  17. kfgz

    Hp Dv9000

    No pewnie, że ma znaczenie - inny chipset = inny sterownik niż podałem.
  18. kfgz

    Hp Dv9000

    Ten sterownik powinien pasować: http://downloadcenter.intel.com/download.a...06&lang=eng
  19. Do tego nie trzeba żadnych programów... wystarczy odpowiednio skonfigurować połączenie i dodać je do autostartu.
  20. W zasadzie pierwszą czynnością jaką powinieneś zrobić to update BIOSu. Jeżeli problemy nadal będą występować to sprawdź pamięci oraz dysk.
  21. Raczej CASIO: http://www.allegro.pl/item567686936_kalkul...vat_gdansk.html http://www.allegro.pl/item567689714_kalkul...vat_gdansk.html Ewentualnie CITIZEN: http://www.ehandlowy.com.pl/kalkulator-nau...p280-p-785.html
  22. kfgz

    Na Co Czekamy

    T4: Salvation i kolejne części.
  23. Ad. 1. Tak, aczkolwiek nie zawsze. Ja np poległem na flashplayer (standalone). Ad. 2. http://wiki.winehq.org/WineOn64bit
  24. Shakell, http://www.youtube.com/watch?v=DP2VyquMAaM
  25. Ja bym raczej obstawiał, że to cewki w zasilaczu piszczą. Miałem podobny problem. Orthos w trybie Small FFT = zero pisków. Orthos w trybie BLEND = piski. Wymieniłem zasilator i jak ręką odjął.
×
×
  • Dodaj nową pozycję...