C/C++

egyszerű 3D-s fejlesztőkörnyezetek

Fórumok

Sziasztok!

Szabad szoftverek között kutatodom olyan megoldások után,
amelyek segítségével 3D-ben (konkrétan: OpenGL-ben) és
viszonylag rövid idő alatt ki tudnék fejleszteni egy
3D-s objektumokat külső adatok alapján kirajzoló/animáló
programot... Talán ezen a helyen kicsit off-nak számít
a téma, bár nyelvként főleg a C++ jöhetne szóba - esetleg
Python-nal megtámogatva (3D-s utilok közül pedig olyanra
lenne szükségem, amely alapból támogatja az anaglyph-et).

A jövő hét elején beírom, hogy mire jutottam a böngészésben,
de addig is: minden ötlet szívesen fogadnék ill. előre is
köszönök!

Üdv.: Deacon

cpu idle + c

Fórumok

Hello

Olyan kérdésem lenne, hogy hogyan tudom lekérdezni C -ben linux alatt a cpu kihasználtságát, meg a többi dolgot amit a top kiir. Nem kellen minden de ami fontos lenne a cpu kihasználtság meg az idle. Amit gondolom ugy kapnék meg, hogy 100 -bol kivonnám a kihasználtságot de ha van rá függvény annak is örülnék.
Nézzegettem már libc referenciat de nem tudom, kideriteni, hogy nekem mely fuggvenyek kellenek.

Előre is köszönöm.

wavecom modem programozasa

Fórumok

Hello

Csak erdeklodnek van-e valakinek tapasztalata wavecom modemeken futo OpenAT sdk-val valo fejlesztesben? Lenne par kerdesem.

Az egyik hogy az alap SDK felrakasa utan miert nem talalja a gcc forditot, mikozben az az alapertelmezett?.

Bjarne fonetikája

Fórumok

Sziasztok! Nem igazán illik sem a Flame-be, sem az Offtopicba, ezért (érthető okokból) ide írom...

Aki tudja, légyszíves írja már le fonetikusan, hogy hogyan kell kiejteni "Bjarne Stroustrup" nevét? Igen, illene tudnom, de "régen volt"...... Köszi!

projekthez kapcsolódás

Fórumok

Sziasztok!

Rendelkezem már némi programozói tudással (csak C++ területen) és szeretnék hasznos fejlesztői projektekbe bekapcsolódni. Tudtok erre valami jó kiindulási pontot?

Köszi szépen!

újra kifogott rajtam a gcc (g++)

Fórumok

Kedves Fórumozók!

Egy példaprogramot kellene irnom c++ban, de sajnos nem tudom mi lehet, a gond és miért nem fordul le és hogy hogyan tudnám megjavitani. A lényeg az lenne, hogy warning nélkül forduljon -Wall-al, és még működjön is. Ez amúgy egy ilyen kis DFA természetes szám felismerő példaprogram lenne.

Ezt a hibaüzenetet kapom:
janos@janos_mobil:~/Desktop/botondos/01$ make
gcc -c exception.cpp -Wall -O2 -o exception.o
gcc -c dfa.cpp -Wall -O2 -o dfa.o
In file included from dfa.cpp:2:
dfa.hpp:15: error: parse error before `&' token
dfa.hpp:17: error: parse error before `&' token
dfa.hpp:32: error: parse error before `&' token
dfa.cpp:48: error: prototype for `bool basicDFA::checkIfAccepted(const
std::string&) const' does not match any in class `basicDFA'
dfa.hpp:17: error: candidate is: bool basicDFA::checkIfAccepted(...) const
dfa.cpp:85: error: prototype for `bool cardinalNumbersDFA::acceptedByDFA(const
std::string&) const' does not match any in class `cardinalNumbersDFA'
dfa.hpp:32: error: candidate is: virtual bool
cardinalNumbersDFA::acceptedByDFA(...) const
make: *** [dfa] Error 1
janos@janos_mobil:~/Desktop/botondos/01$

A fájlok pedig innen elérhetők/letölthetők: http://chaosrider.uw.hu/stuff/janos_01.tgz

Ha valaki tudna valami jó ötlete, annak nagyon tudnék örülni.
Üdv:
János

Illetve a fájlokat berakom ide is, tehát:

dfa.cpp:

#include
#include "dfa.hpp"
#include "exception.hpp"

basicDFA::basicDFA() {
numberOfStates = 0;
initialState = 0;
finalStates = 0;
transitionMap = 0;
}

basicDFA::~basicDFA() {
cout << "Called!" << endl;
if (finalStates != 0) delete finalStates;

if ((transitionMap != 0) && (numberOfStates != 0)) {
for (int i=0;i
delete transitionMap[i];
}
delete transitionMap;
}

}

void basicDFA::initializeTransitionMap() {
if ((transitionMap != 0) || (numberOfStates == 0)) return;
transitionMap = new int*[numberOfStates];

if (transitionMap == 0) throw new outOfMemoryException();

for (int i=0;i
transitionMap[i] = new int[CHARSET_SIZE];
if (transitionMap[i] == 0) throw new outOfMemoryException();
memset(transitionMap[i], -1, CHARSET_SIZE);
}
}

void basicDFA::initializeFinalStates() {
if ((finalStates != 0) || (numberOfStates == 0)) return;

finalStates = new int[numberOfStates];

if (finalStates == 0) throw new outOfMemoryException();

memset(transitionMap, false, numberOfStates);
}

bool basicDFA::checkIfAccepted(const string & input) const {
int currentState = initialState;
if (currentState >= numberOfStates) throw invalidInitialStateException();
if ((numberOfStates == 0) || (initialState == 0) || (finalStates == 0) || (transitionMap == 0)) return false;
size_t inputLength = input.length();
for (size_t i=0;i

currentState = transitionMap[currentState][ (unsigned) input[i]];
if (currentState == -1) throw uninitializedTransitionException();
if ((currentState < 0) || (currentState >= numberOfStates)) throw invalidTransitionException();
}
if (finalStates[currentState] == true) return true;
else return false;
}

/*-------------------- Cardinal Numbers --------------------*/
cardinalNumbersDFA::cardinalNumbersDFA() {
numberOfStates = 3;
initialState = 0;
initializeFinalStates();
finalStates[1] = true;
initializeTransitionMap();

for (unsigned i=0;i
for (unsigned i=0;i<9;i++) transitionMap[0][(unsigned) ('1'+i)] = 1;

for (unsigned i=0;i
for (unsigned i=0;i<10;i++) transitionMap[1][(unsigned) ('0'+i)] = 1;

for (unsigned i=0;i
}

cardinalNumbersDFA::~cardinalNumbersDFA() {
//basicDFA::~basicDFA();
}

bool cardinalNumbersDFA::acceptedByDFA(const string &input) const {
return basicDFA::checkIfAccepted(input);
}

//-------------------------------------------------------------------------

dfa.hpp:

#ifndef __DFA_HPP__
#define __DFA_HPP__

#include

using namespace std;

const unsigned int CHARSET_SIZE = 256; //Let's assume ANSI

class basicDFA {
public:
basicDFA();
virtual ~basicDFA();

virtual bool acceptedByDFA(const string &) const = 0;
protected:
bool checkIfAccepted(const string &) const;
void initializeTransitionMap();
void initializeFinalStates();

int numberOfStates;
int initialState;
int *finalStates;
int **transitionMap;
};

class cardinalNumbersDFA: public basicDFA {
public:
cardinalNumbersDFA();
~cardinalNumbersDFA();

bool acceptedByDFA(const string &) const;
};

#endif //__DFA_HPP__

//-------------------------------------------------------------------------

exception.cpp:

#include "exception.hpp"

basicException::basicException() {
}

basicException::~basicException() {
}

void basicException::printMessage() const {
cerr << msg;
}

outOfMemoryException::outOfMemoryException() : basicException::basicException() {
msg = "\nOut of memory...\nThe program will now terminate...\n";
}

outOfMemoryException::~outOfMemoryException() {
}

void outOfMemoryException::dumpInfo() const {
basicException::printMessage();
}

invalidInitialStateException::invalidInitialStateException() : basicException::basicException() {
msg = "\nInvalid initial state...\nThe program will now terminate...\n";
}

invalidInitialStateException::~invalidInitialStateException() {
}

void invalidInitialStateException::dumpInfo() const {
basicException::printMessage();
}

uninitializedTransitionException::uninitializedTransitionException() : basicException::basicException() {
msg = "\nAn uninitialized transition was encountered...\nThe program will now terminate...\n";
}

uninitializedTransitionException::~uninitializedTransitionException() {
}

void uninitializedTransitionException::dumpInfo() const {
basicException::printMessage();
}

invalidTransitionException::invalidTransitionException() : basicException::basicException() {
msg = "\nAn invalid transition was encountered...\nThe program will now terminate...\n";
}

invalidTransitionException::~invalidTransitionException() {
}

void invalidTransitionException::dumpInfo() const {
basicException::printMessage();
}

//-------------------------------------------------------------------------

exception.hpp:

#ifndef __EXCEPTION_HPP__
#define __EXCEPTION_HPP__

#include
#include

using namespace std;

class basicException {
public:
basicException();
virtual ~basicException();

virtual void dumpInfo() const = 0;
protected:
void printMessage() const;

string msg;
};

class outOfMemoryException: public basicException {
public:
outOfMemoryException();
~outOfMemoryException();

void dumpInfo() const;
};

class invalidInitialStateException: public basicException {
public:
invalidInitialStateException();
~invalidInitialStateException();

void dumpInfo() const;
};

class uninitializedTransitionException: public basicException {
public:
uninitializedTransitionException();
~uninitializedTransitionException();

void dumpInfo() const;
};

class invalidTransitionException: public basicException {
public:
invalidTransitionException();
~invalidTransitionException();

void dumpInfo() const;
};

#endif //__EXCEPTION_HPP__

//-------------------------------------------------------------------------

main.cpp:

#include
#include
#include "dfa.hpp"
#include "exception.hpp"

using namespace std;

int main() {
cout << "Hello World!" << endl;
try {
basicDFA *a = new cardinalNumbersDFA();
if ( a->acceptedByDFA("1234567890") == true) cout << "OK." << endl;
else cout << "Failed!" << endl;
}
catch (basicException *e) {
e->dumpInfo();
delete e;
return -1;
}
return 0;
}

//-------------------------------------------------------------------------

Makefile:

# Copyright (c) János Szigetvári, 2006.
# 2006-07-08
#

# OPTIONS
CC = gcc

WARNINGS = -Wall
OPTIMIZATION = -O2
OUTFILESPEC = -o
COMPILEONLY = -c
LINKONY =

REMOVE = rm -f

# COMMANDS
binary: main
$(CC) $(LINKONLY) main.o dfa.o exception.o $(WARNINGS) $(OPTIMIZATION) $(OUTFILESPEC) botondos01.bin
$(REMOVE) *.o

main: dfa exception
$(CC) $(COMPILEONLY) main.cpp $(WARNINGS) $(OPTIMIZATION) $(OUTFILESPEC) main.o

dfa: dfa.hpp exception
$(CC) $(COMPILEONLY) dfa.cpp $(WARNINGS) $(OPTIMIZATION) $(OUTFILESPEC) dfa.o

exception: exception.hpp
$(CC) $(COMPILEONLY) exception.cpp $(WARNINGS) $(OPTIMIZATION) $(OUTFILESPEC) exception.o

clean:
$(REMOVE) *.o

Hogyan kéne ezt goto nélkül?

Fórumok

Idézet a K&R könyvből:

2.3 Gyakorlat. Írjunk meg a sqeeze(s1,s2) egy másik változatát, amely s1-ből minden olyan kerektert töröl, amely megegyezik bármelyik s2 karakterláncbeli karakterrel!

Én a lenti megoldást írtam.
Lehetne ezt a feladatot frappánsabban megoldani a goto használata nélkül?


squeeze (s1,s2)
        char *s1,*s2;
{
        int i,n,x=0;
        for(i=0;s1[i]!=0;i++)
        {
                for(n=0;s2[n]!=0;n++)
                        if (s1[i]==s2[n])
                                goto abort;
                s1[x]=s1[i];
                x++;
                abort:
                ;
        }
        s1[x]=0;
}

Kezdő!!!

Fórumok

Hell0!
Megvannak a "c"-s forrásaim parancssorból, hogy forditsam őket:
endless:/home/chosa91/jdkchat-1.5# ls
összesen 52
-rw-r--r-- 1 501 501 18289 2004-01-04 23:17 COPYING
-rw-r--r-- 1 501 501 12096 2004-01-04 23:52 jdkchat.cpp
-rw-r--r-- 1 501 501 2425 2004-01-04 23:17 jdkchat.h
-rw-r--r-- 1 501 501 2592 2004-01-04 23:52 jdkchatmain.cpp
-rw-r--r-- 1 501 501 229 2004-01-04 23:18 Makefile
-rw-r--r-- 1 501 501 1976 2004-01-04 23:17 README
-rw-r--r-- 1 501 501 440 2004-01-04 23:15 world.h

file végének levágása "c"

Fórumok

A neten nem találtam egyértelmű dolgot arra, hogyan tudnék megoldani 2 dolgot egyszerre.
1. fscanf/frintf-fel irom olvasom a file-t
2. letudja vágni a végét ftruncate
De míg a fscanf/fprintf a FILE *stream -et használják, addig a ftruncate meg egy int változót kér.

Hogyan tudnám összekombinálni a kettőt, vagy hogyan tudnám levágni egy FILE *stream nem kellő végét?

config file beolvasás c-ben

Fórumok

Tudtok ajánlani valami egyszerű megoldást, hogy hogyan tudnék legy egyszerübben beolvasni egy config filet, ami beállítja a program futási paramétereit.
olyansmire gondolok ami feltölti a változókat értékekkel, mint pl bash-ben a ". config.sh"

köszi