#programowanie #cpp

Czy mogę utworzyć strumień, który będzie fragmentem innego strumienia? Załóżmy, że z całego pliku chcę wyodrębnić fragment pliku i z tego fragmentu utworzyć strumień. Chcę to zrobić bez kopiowania danych, bo nie chcę zarżnąć RAMu. Pomysły?
@japer: Oblicz, ile bajtów masz do przeczytania, a za pomocą

seekg
sprawdź, od kiedy należy czytać. A jeśli nie wiesz od kiedy dokąd czytać, to masz problem. Można byłoby to jakoś rozwiązać, ale jestem nieco pijany i nie odpowiem. Jeszcze spore znaczenie ma to, ile potrzebujesz pamięci do przetworzenia tych danych. Bo jeśli mniej niż ilość ram w komputerze docelowym to dyskusja jest nieco bez sensu. ;)
napisalam sobie na szybciutko programik do liczenia dwumianu newtona, przyda sie przy nauce kombinatorki

double silnia(double i)

{

if (i == 0)

return 1;

else

return i*silnia(i-1);

}

int main(int argc, char const argv[])

{

if (argc==3 && (atoi(argv[2]))<=(atoi(argv[1])))

std::cout << silnia(atoi(argv[1]))/(silnia(atoi(argv[2]))silnia((atoi(argv[1]))-(atoi(argv[2]))))<<"\n";

else

std::cout << "err" << "\n";

return 0;

}

#studbaza #programowanie #cpp
@bohater:

Przede wszystkim: rekurencyjna silnia to fatalny pomysł.

Po drugie: przepisanie wprost wzoru (czyli n!/k!(n-k!)) jest trochę lamerskie, bo bez problemu przekroczysz precyzję double przy nieco większych liczbach. Można to zredukować do postaci: n(n-1)(n-2)…(n-k) / k!

Po trzecie: to operacja całkowitoliczbowa, więc jeśli wynik ma być jakkolwiek przydatny (poza oszacowaniem rzędu wielkości) – nie wykonuj go na floatach.

Po czwarte: zrób na miłość boską z tego funkcję; ten

cout
w mainie
robię grę snake, i mam problem z czasowym opóźnieniem ruchu, mianowicie nie mam pomysłu jak zrobić, żeby funkcja czekała powiedzmy 1s. aż nacisnę klawisz, a jak go nic nie nacisnę, to żeby szła dalej, obecnie korzystam z getch(), tyle że tutaj muszę nacisnąć klawisz inaczej stoi w miejscu

#programowanie #cpp
#cpp #programowanie #pytanie

NO ELO MIRASKY. Mam pytanie odnośnie C++ - zamierzam stworzyć sobie pewne... Ułatwienie i chciałem tworzyć nowe zmienne/tablice za pomocą klasy Variable. W klasie tej znalazłyby się 3 podstawowe rzeczy, czyli tworzenie, czyszczenie i usuwanie. Nie wiem jak zacząć, za to myślałem o czymś w stylu:

#define CREATEVARIABLEINT(name, type) type name

W efekcie czego mógłbym zrobić taki myk:

CREATEVARIABLEINT(TEST, int);

I to by zadziałało. Ale jak to zrobić trochę
@Linux_Shines: musiałbyś się posłużyć przeładowaniem operatorów i szablonami klas.

Musisz zdefiniować:

- konstruktor, do inicjalizacji zmiennej opakowanej

- operator przypisania dla konkretnego opakowanego obiektu

- operator konwersji na typ opakowanego obiektu

- operator << i >> dla strumieni
@handler: To raczej oznacza, ƶe nie rozumiesz :P

Zakładam, ƶe mówimy o tablicach dynamicznych.

W C tablicę moƶesz zadeklarować w taki sposób:

// tablica n intów
int n = 100;
int *tab = malloc(sizeof(int) * n);
// uzycie
free(tab);
⟵ to jest konieczny krok inaczej będziesz miał wycieki pamięci.

w C++ jest więcej wygodniejszych i bezpieczniejszych sposobów ale najłatwiejszy w uƶyciu jest

vector
podstawowa "tablica". Ma

operator[]
, czyli moƶesz odwołać
Chciałbym sprawdzić wszystkie literki (C). Jednak program wywala się na pętli - czemu?:

char input[10];

gets(input);

len = strlen(input);

for (i = 0; i < len; i++) {

if (strcmp(input[i], 'a') == 0) // ... dalsza cześć kodu

}

#c #cpp
@Hauleth: Teraz jest taki problem że gdy test ma wartości :

test ( bool (T1) (T2), int , const char ) wywala mi :

error: cannot convert ‘CristallDetectRulesTest::testcheckAlfanum’ from type ‘bool (CristallDetectRulesTest::)(bool, std::string) {aka bool (CristallDetectRulesTest::)(bool, std::basic_string<char>)}’ to type ‘bool (CristallDetectRulesTest::*)(bool, std::basic_string)’|
@nvll: @enef: Nie patrz na bibliotekę standardową. Większość tego będzie dla Ciebie niesamowicie nieczytelna (chociaƶby dlatego, ƶe implementatorzy muszą zaczynać wszystkie nazwy od podwójnej podłogi lub wielkiej litery po podłodze).

Popatrz na źrodła jakichś bibliotek, np Qt albo boost (chociaƶ boost będzie raczej nieczytelny - tak samo jak biblioteka standardowa). Qt na pewno jest ślicznie i czytelnie napisane - polecam.
Mirky, mam ja sobie taki prosty kod liczacy obwod i pole prostopadlosicanu:

#include

#include

using namespace std;

int main(int argc, char argv[])

{

if (argc = 3)

{

cout << endl << "Umfang= " << 2(atof(argv[1]) + atof(argv[2])) << endl

<< "Flaeche= " << atof(argv[1]) * atof(argv[2]) << endl << endl;

}

else

cout << "Bitte zwei Zahlen eingeben!" << endl;

return 0;

}

W przypadku uruchomienia programu bez parametrow zwraca seg.