C/C++

Kérdés tanfolyammal kapcsolatban

Fórumok

Jómagam nem programozok, és nem is akarok programozni. Viszont ma olvastam egy magyar informatikai hírportálon, hogy létezik oktatás, ahol befizet a delikvens több mint 1 millió forintot 4 hónapra, és a végén kap állást.

Nem tudom miért, de nincsenek jó érzéseim ezzel kapcsolatban. Hogy mit is érzek:

1. nem hiszek abban, hogy valakiből 4 hónap alatt programozó válik, minthogy idegen nyelvet sem lehet 4 hónap alatt megtanulni
2. lehet kap állást az ember, de az is lehet, hogy próbaidő alatt megválnak tőle, vagy később
3. a tanfolyam költsége extrém magas, hazai viszonylatban egész biztosan. Nem is tudom, hogy ki lenne a célközönség?

Várnám a tapasztaltabbak véleményét is, még egyszer mondom, nem áll szándékomban C++ -t tanulni, csak rácsodálkoztam a témára.
Konkrétumokat direkt nem írok, nem akarok semmit sem reklámozni se pro se kontra.

collect2: error: ld returned 1 exit status {megoldva}

Fórumok

Sziasztok.

Egy mezei programot szeretnék leforgatni, a neve rtl-ais.
Ezen instrukciókat követtem Ubuntu studion és Arch-on (ez utóbbi rpi zeron van):
https://github.com/dgiardini/rtl-ais/blob/master/README
Nem ment.
A forgatás.
Ezt kaptam:



root@fekete:/usr/src/rtl-ais/rtl-ais# make
cc main.o rtl_ais.o convenience.o ./aisdecoder/aisdecoder.o ./aisdecoder/sounddecoder.o ./aisdecoder/lib/receiver.o ./aisdecoder/lib/protodec.o ./aisdecoder/lib/hmalloc.o ./aisdecoder/lib/filter.o ./tcp_listener/tcp_listener.o -o rtl_ais -lpthread -lm -L/usr/local/lib -lrtlsdr -lusb-1.0 
./aisdecoder/lib/filter.o: In function `__mac_g':
/usr/src/rtl-ais/rtl-ais/aisdecoder/lib/filter-i386.h:37: multiple definition of `__mac_g'
./aisdecoder/lib/receiver.o:/usr/src/rtl-ais/rtl-ais/aisdecoder/lib/filter-i386.h:37: first defined here
./aisdecoder/lib/filter.o: In function `__mac_c':
/usr/src/rtl-ais/rtl-ais/aisdecoder/lib/filter-i386.h:48: multiple definition of `__mac_c'
./aisdecoder/lib/receiver.o:/usr/src/rtl-ais/rtl-ais/aisdecoder/lib/filter-i386.h:48: first defined here
collect2: error: ld returned 1 exit status
Makefile:56: recipe for target 'rtl_ais' failed
make: *** [rtl_ais] Error 1


Próbáltam rákeresni a tárgyban megadott hibaüzenetre, de sajnos ennyire nem értek a céhez, csak 1 évig tanultam vala kb. 12 éve.

Szeretném először az ubuntumon leforgatni, majd arch-on is, az Arch-on egyes *dev csomagokat meg sem tudok szerezni hozzá, mert a repóim hiányosak vagy meghibbantak. Szóval tanácstalan vagyok.

Háromszög kirajzolása egyszerűbben

Fórumok

Sziasztok!

Az alábbi C kóddal kapcsolatban kérnék segítséget:


#include <stdio.h>
#include <stdlib.h>

/**
  * Adott a "telt haromszog" algoritmus
  * Modositsa az algoritmust: csak haztetot, illetve csak a haromszog keretet rajzolja ki!
**/

int main()
{
    //telt haromszog (feladatban megadott algoritmussal)
    int sor, magassag, i;

    printf("Magassag: ");
    scanf("%d", &magassag);

    for(sor=1; sor <= magassag; sor++){
        for(i=1; i <= magassag-sor; i++){
            printf(" ");
        }
        for(i=1; i <= (sor*2)-1; i++){
            printf("*");
        }
        printf("\n");
    }

    printf("\n\n");

    //csak hazteto
    for(sor=1; sor <= magassag; sor++){
        for(i=1; i <= magassag-sor; i++){
            printf(" ");
        }
        printf("*");
        for(i++;i < magassag+sor-1; i++){
            printf(" ");
        }
        if(!(sor == 1)) { //az elso sorban csak 1 csillag szukseges
            printf("*");
        }
        printf("\n");
    }

    printf("\n\n");

    //haromszog keret
    for(sor=1; sor <= magassag-1; sor++){ // ki: 1. sortol utolso elotti sorig
        for(i=1; i <= magassag-sor; i++){
            printf(" ");
        }
        printf("*");
        for(i++;i < magassag+sor-1; i++){
            printf(" ");
        }
        if(!(sor == 1)) { //az elso sorban csak 1 csillag szukseges
            printf("*");
        }
        printf("\n");
        }
    for(i=1; i <= magassag*2-1; i++){ //az utolso sor teljes
        printf("*");
    }

    return 0;
}

A "telt haromszog" algoritmus adott volt pszeudo-kóddal, ezt írtam át C-re. Ezt módosítva kellett kiíratni a "háztetőt" és a háromszög keretét.

Kérdés, hogy a "csak hazteto" és a "haromszog keret" rész egyszerűsíthető-e valahogyan tovább?
Most próbálgatással meg tudtam írni, de nem vagyok benne biztos, hogy 1 hónap múlva ezt papíron is tudni fogom reprodukálni. Ezért érdekelne más nézőpontja is, hátha megoldható egyszerűbben is a feladat.

C programozás újrakezdőknek

Fórumok

Korábban tanultam C programozást, ami akkor számomra életidegen volt. Az elmúlt években más nyelvek felé orientálódtam, azonban úgy hozta az élet, hogy elő kéne vennem az ANSI C-t.
Tudnátok ajánlani olyan (online) kurzust, ami segítene feleleveníteni az emlékeimet, esetleg a kimaradt részeket elsajátítani. Van olyan "kurzus", amit jó szívvel ajánlanátok ehhez?

std::stringstream to std::string

Fórumok

Sziasztok!

Egyszeru megoldast keresek a fenti problemara.

Termeszetesen a standart megoldast az ismerem:

std::stringstream ss;
ss <<1234 <<"abde" <<'s';
std::string str=ss.str();

Egy 1 sorost keresek akar boost-tal is.
Valami hasonlot:

std::string str=(str::stringstream() <<1234 <<"abde" <<'s').str();

Ez sajnos nem mukodik mert a zarjeles kifejezes std::ostream lesz.

Gabor

Kompozíció statikusan típusos, imperatív programozási nyelvben

Fórumok

Üdv!

Valószínűleg megfertőztek a "modern" programozási paradigmák, mert egy (szerintem) egész egyszerű problémát nem sikerül megoldanom a topicban jelzett tulajdonságú nyelvben (egész pontosan GLSL, de ez most irreleváns).

A probléma demonstrálására kitaláltam egy egyszerű feladatot: szimbolikus algebrát kell megvalósítani a négy alapművelettel, konstansokkal, változókkal, lehetőleg bővíthető módon. A változók behelyettesítési értéke a kifejezés létrehozása után kerül megadásra, vagyis a kifejezésnek többször felhasználhatónak kell lennie. A problémát mindjárt meg is oldottam OOP és funkcionális szemléletben is, mindkét esetben Scalaban. :) A bővíthetőséget az sqrt függvény demonstrálja, ami a SymbolicExpressions objektumon kívül került megvalósításra, vagyis az eredeti kódhoz nem kellett nyúlni.

Egyaránt várok ötleteket és konkrét megoldásokat. Utóbbi esetben ha a választott nyelv C, akkor nem ér makrókat, fordítóspecifikus feature-öket, függvény pointereket, uniont és idegen típusra castolást (lásd alább) alkalmazni. Más nyelv esetén előbbi szabályok értelem szerűen alkalmazandóak. A lényeg, hogy a megoldás tiszta, szép, a nyelvet nem megerőszakoló kód legyen.


Foo* foo = newFoo();

// nem ér, Bar != Foo
Bar* bar = (Bar*)foo;

// ér, minden pointer egyben void* is
void* baz = (void*)foo;

// ér, baz eredetileg Foo*
Foo* quz = (Foo*)baz;

C++ és LUA

Fórumok

Adok egy ötletet komolyabb C++ projektekhez, vagy akár kezdő programmereknek.

2évvel ezelőtt, összeszámoltam, hogy a projekteim (különálló, de közös lib és keretrendszer) forgatása kb. 5éven keresztül leírhatatlan időmennyiségbe tellt. Beépített webszerver és webui, ami tudjuk azért rossz mert a legkisebb css változtatásnál azt a részt újra kell fordítani (tudom, nem kellett volna beágyazni, de én úgy akartam).

Readásul std::map nálam elég sűrűn előfordult addig míg át nem álltam c++11 -re mert ott az unordered előtaggal 400% -osra gyorsult, de ezért átkellett írnom nagyjából 200 fájlt, hiába typedefeltem, aztán volt jópár bug is ebből adódóan.

Random jött egy gondolat, hogy belerakom a LUA -t és azt kell mondanom, hogy nagyon megérte.
Oké, hogy scripting, de nem egy PHP lassú, readásul Pure C, egyes funkciók a LUA -ba gyorsabbak mint a C++ -ba, ami különösen jó, hogy ha hiba van akkor nem crashel le az egész program, meg hát a scripting nyelv on-the-fly írható nincs build idő. Most ott tartok, hogy egy komolyabb szoftvert 3nap alatt megírok, jó ehhez kellett 2évnyi LUA/C++ implementáció irása, de érdemes elgondolkodni nem csak játékok terén.

Így a keretrendszer tud bővülni és tiszta marad és átlátható, a LUA állomány meg adott, ha bármit változtatok azonnal látszik és csak pár libet kell hozzá maintanelni.