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. Jest taki sobie prosty program do obliczania dokładności chodu zegarków mechanicznych #include <stdlib.h>#include <string.h>#include <stdio.h>#include <errno.h>#include <math.h>int FileNotFound(char *path) { printf("\n\nError while opening file '%s': %s\n\n", path, strerror(errno)); return 1;}int malloc_fail() { printf("\n\nERROR: Not enougth RAM for allocating buffer\n"); return 1; }int main(int argc, char *argv[]) { FILE *inpf; float atph, t, *arr1, *arr2, *arr3, *tmp, a1_avg = 0, a2_avg = 0, a1_sos = 0, a2_sos = 0, a3_sos = 0; int x, i, arr2_size, arr1_size = 1; inpf = fopen(argv[1], "r"); if(inpf == NULL) { FileNotFound(argv[1]); exit(1); } arr1 = malloc(sizeof(float)); if(arr1 == NULL) { malloc_fail(); exit(1); } while(!feof(inpf)) { if ((x = fscanf(inpf, "%f", &t)) > 0) { arr1[arr1_size - 1] = t; arr1_size++; tmp = realloc(arr1, sizeof(float)*arr1_size); if(arr1 != NULL) { arr1 = tmp; } else { free(arr1); malloc_fail(); exit(1); } } else if(x == 0) break; } fclose(inpf); arr1_size--; arr2_size = arr1_size - 1; if (arr2_size <= 0) { printf("\nNot enough data!\n\n"); exit(1); } arr2 = malloc(sizeof(float)*arr2_size); if(arr2 == NULL) { malloc_fail(); exit(1); } arr3 = malloc(sizeof(float)*arr2_size); if(arr3 == NULL) { malloc_fail(); exit(1); } for(i = 0; i < arr2_size; i++) arr2[i] = arr1[i + 1] - arr1[i]; /*a1_avg*/ for(i = 0; i < arr1_size; i++) a1_avg += arr1[i]; a1_avg /= arr1_size; /*a2_avg*/ for(i = 0; i < arr2_size; i++) a2_avg += arr2[i]; a2_avg /= arr2_size; /*a1_sos*/ for(i = 0; i < arr1_size; i++) a1_sos += (arr1[i] - a1_avg) * (arr1[i] - a1_avg); a1_sos = sqrtf(a1_sos) / arr1_size; /*a2_sos*/ for(i = 0; i < arr2_size; i++) a2_sos += (arr2[i] - a2_avg) * (arr2[i] - a2_avg); a2_sos = sqrtf(a2_sos) / arr2_size; /*tph*/ atph = (3600.0 + a2_avg / 24.0) * 5.0; for(i = 0; i < arr2_size; i++) arr3[i] = (3600.0 + arr2[i] / 24.0) * 5.0; for(i = 0; i < arr2_size; i++) a3_sos += (arr3[i] - atph) * (arr3[i] - atph); a3_sos = sqrtf(a3_sos) / arr2_size; free(arr1); free(arr2); free(arr3); printf("Avg ticks per hour = %.2f +/- %.3f\n", atph, a3_sos); printf("Avg daily drift = %.1f +/- %.2f\n", a2_avg, a2_sos); printf("Avg absoulte drift = %.1f +/- %.2f\n\n", a1_avg, a1_sos); printf("Number of good samples: %d\n\n", arr1_size); return 0;} Wszystko byłoby pięknie gdyby nie to, że po wykonaniu pętli for po linii // ******** // zmienia się wartość ostatniej komórki tablicy arr2 (tj. arr2[arr2_size - 1] = arr3[0]). Gdy usunę komentarz sprzed linii //arr2[arr2_size - 1] = arr1[arr2_size] - arr1[arr2_size - 1]; to arr2 jest już w porządku ale z kolei wtedy arr3[0] = arr2[arr2_size - 1] o_O. Spotkał się ktoś kiedyś z takim "voodoo"? Dane dla programu są w pliku w postaci liczbowej (różnica w czasie w sekundach) np -31-32-27-14-14-6-3-73-3 Wywołanie programu progs plik_z_danymi.txt
  2. Zobacz czy instalka pójdzie z karty SD. Tu masz pełny opis jak taką kartę przygotować i użyć + punkt 12 (metoda II) o którym autorka zapomniała wspomnieć. BIOS powinien wykryć kartę jako twardy dysk, jeśli tak będzie to wystarczy ustawić odpowiednią kolejność dysków przy bootowaniu. Z drugiej jednak strony z pendrive powinno być teoretycznie tak samo jak z kartą.
  3. Do niszczenia danych w nowoczesnych dyskach nie trzeba używać żadnych specjalistycznych algorytmów, wystarczy pojedyncze zerowanie. Jak komuś zależy na czasie i ma dużo gotówki (masowe niszczenie dysków) to kupuję sobie np taką "szafę grającą" i pozamiatane.
  4. Podaj model laptopa. Jeśli jest w miarę nowy to na 99.9% ma wbudowaną kartę wi-fi.
  5. Jeżeli są sygnały dźwiękowe przy starcie (1 długi i 2 krótkie) to walcz z poprawnym włożeniem karty graficznej aż do skutku. EDIT: Nie zapomnij o podłączeniu zasilania do karty.
  6. kfgz

    Kable sata

    Delock Kabel Taśma SATA 70cm Metalowe Zaczepy (1244891460) - Aukcje internetowe Allegro
  7. Mi to raczej wygląda na problem z pamięcią podręczną (CACHE) procesora. Oczywiście mogę się mylić. Na twoim miejscu odżałowałbym kilkadziesiąt złotych za diagnozę w serwisie.
  8. Mi to wygląda po prostu na artefakty po przeskalowaniu do rozdzielczości natywnej monitora. Proponuję na początek pobrać próbki blueray w rozdzielczości 1920x1080 i wtedy będziesz dopiero miał porównanie.
  9. MHDD nie współpracuje z dyskami w trybie AHCI, a taki właśnie tryb na 99.9% masz ustawiony w BIOSie. Jeśli masz możliwość to zmień tryb pracy dysku na IDE.
  10. Dzięki temu możesz przetestować szybkość ładowania się systemu z LiveCD (bez wpływu dysku). Brak dysku pozwoli sprawdzić czy jest jakaś poprawa.
  11. Przetestuj procesor za pomocą mprime (login//passwd = stress//stress). LiveCD możesz pobrać stąd. Przy okazji możesz wyjąć HDD i tym samym wyeliminować go (lub nie) z listy podejrzanych.
  12. kfgz

    Hasło dla XP

    System od biedy można zainstalować na pendrive lub użyć LiveCD. Dawno, dawno temu pożyczyłem kompa dla kolegi, który miał brata. Brat kolegi często korzystał z kompa więc ten zablokował mu dostęp w dosyć perfidny sposób. Otóż zamiast przycisku zamontował coś na wzór stacyjki od samochodu. Oczywiście w takim wypadku należałoby także zamknąć obudowę na kłódkę i problem praktycznie z głowy.
  13. kfgz

    Hasło dla XP

    Hasło na BIOS jest zbyt proste do obejścia. Latem robiłem kompy do biblioteki publicznej. Tak się składa, że jest ona w tym samym budynku co podstawówka i gimnazjum. Kompy musiały być ucznioodporne, więc na początek hasło o długości 24 znaków na konto admina + szyfrowanie partycji systemowej na hasło - polecam Downloads - DiskCryptor wiki
  14. No trudno, żeby po zerowaniu nie pozostał ślad. Śladu nie pozostanie po danych i o to chyba chodziło autorowi wątku, a niszczenie dysku... hmm, can be fun ale po co niszczyć, może kiedyś się przyda.
  15. Zmień Sata Operation Mode na IDE (zdjęcie bosd_7) i/lub przeczytaj ten wątek http://forum.purepc.pl/Microsoft-Windows-f34/Brak-Dysku-Lub-Bsod-niebieski-t284253.html
  16. Weź do ręki kartkę papieru i długopis. Oblicz kilka punktów ze wzoru funkcji, połącz ze sobą punkty. Jak to zrobisz to spróbuj zaprogramować to co zrobiłeś. Użyj pętli (np for) w której będziesz zwiększał x o stałą wartość i obliczał f(x). W tejże pętli od razu możesz rysować linę od punktu wyznaczonego w poprzednim przebiegu pętli do punktu aktualnie obliczanego.
  17. Ale co ma zwracać skoro n jest zmienną globalną.
  18. Ma wartość - jest ona obliczana przez funkcję c().
  19. Błąd jest tzw. czeski ;) Pozwoliłem sobie przerobić co nieco #include <iostream>using namespace std;int n;int t[10];int c(int l) { int s = 10, i; n = 1; for(i = 0; i < 10; i++) t[i] = 0; while(l >= s) { s *= 10; n++; } for(i = 0; i < n; i++) { t[i] = (l % s) / (s / 10); s /= 10; } for(i = 0; i < (n / 2); i++) if(t[i] == t[n - 1 - i]) return 1; return 0;} int main() { int t2, j, s, l, i; int t1[10]; cin >> t2; for(; t2; t2--) { cin >> l; i = 0; for(; c(l); i++) { for(j = 0; j < 10; i++) t1[j] = 0; for(j = 0; j < n; j++) t1[n - 1 - j] = t[j]; s = 10; for(j = 1; j < n; j++) s *= 10; for(j = 0; j < n; j++) { l += s * t1[j]; s /= 10; } } cout << l << " " << i << "\n"; } return 0;} BTW, co oblicza ten progs?
  20. sub KeyPress() Static cvol as Integer select case BRCD.Key (...) case "7": if settings.ActivePlaybackOrder <> orderShuffle then settings.ActivePlaybackOrder = orderShuffle else settings.ActivePlaybackOrder = orderDefault end if case "9": if settings.Volume >= -30 then //mute on cvol = settings.Volume settings.Volume = -50 elseif settings.Volume < -30 then //mute off settings.Volume = cvol end if case "*": showHelp case else end selectend sub Nie wiem czy będzie działać bo nie mam jak sprawdzić ;)
  21. Zgadza się. Diabeł tkwi w szczegółach. Spróbuję naprowadzić Ciebie na rozwiązanie. Otóż, gdy naciśniesz po raz drugi klawisz 9, po raz drugi zostanie wywołana funkcja... ale już zmienna vol zostanie wyzerowana ponieważ nie jest ona zmienną globalną.
  22. Wrzucę jutro gotowy formularz. Dziś raczej nie bo mam trochę roboty z pewnym netbookiem... wrrr. EDIT: Uważaj tylko na nisko latające nadgodziny, bo inaczej wpadniesz na niezły minus ;) http://94.23.202.185/kfgz/xx.xls
  23. Od tego jest dzielenie.
  24. Musisz trochę inaczej podejść do problemu. Rozbij każdy czas na dwie komórki - oddzielnie godziny, oddzielnie minuty - oczywiście w formacie liczbowym. Reszta będzie już tak prosta, że szkoda pisać. Jak sobie nie poradzisz to z miłą chęcią zapodam formularz.
×
×
  • Dodaj nową pozycję...