Keresés

Új hozzászólás Aktív témák

  • Fire/SOUL/CD

    félisten

    válasz Daneeka #450 üzenetére

    Hali!

    Hát ime az összehasonlítás. Mindegyik fejlesztőkörnyezetben CONSOLE APPLICATION PROJECT van létrehozva

    Dev c++ C PROJECT

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

    int main(int argc, char *argv[])
    {
    printf("Hello Daneeka!\n");
    printf("Press ANY KEY to continue...");
    getchar();
    return 0;
    }

    Visual Studio C# 2008

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    Console.WriteLine("Hello Daneeka!");
    }
    }
    }

    Dev C++ C++ PROJECT

    #include <iostream>

    using namespace std;

    int main (int argc, char *argv[])
    {
    cout << "Hello Daneeka!" << endl;
    cout << "Press ANY KEY to continue..." << endl;
    cin.get();
    return 0;
    }

    Visual Studio C++ 2008

    // Fire.cpp : main project file.

    #include "stdafx.h"

    using namespace System;

    int main(array<System::String ^> ^args)
    {
    Console::WriteLine("Hello Daneeka!");
    return 0;
    }

    Szerintem is maradjunk a Dev c++-nál, aztán majd segítünk átalakítani Visual Studios-ra. :DDD

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz Daneeka #453 üzenetére

    Hali!

    Igen, azért tettem bele a négy kódot, hogy lásd mekkora a különbség.(azért a VS-ben "writeline" :DDD , miért nem írtak akkor egy pascal editort is :C )

    Na mindegy, döntsd el miben akarsz dolgozni, aztán ha tudunk segítünk.
    (lehetőleg C legyen, mivel ez C topic)

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz Lortech #456 üzenetére

    Hali!

    Biztos igazad van. Sajna nem ismerem(nem használom) ezeket a fejlesztőkörnyezeteket.
    Azért bátorkodtam ezen kódokat berakni, mert Daneeka korábban arról "panaszkodott", hogy nem tudja befordítani a project-jét, ezeket meg belehet. Tehát lássa, hogy így kellene kinézni a forrásnak.
    Amúgy Borland Delphi 7, Codegear Builder ill Assembler-ben írogatok, amikor ilyen melót kapok.(Rendszerprogramozó szakon végeztem 12 éve)

    A Dev c++ ill VS2008 csak azért raktam fel, mert mostanában sok pl diplomamunkát hoznak hozzám átnézésre vagy javításra, amit ezekben a környezetekben írnak.
    (VS esetén lehet mint újra tanulni, de sebaj szeretem a kihívásokat :DDD )

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz Lortech #458 üzenetére

    Hali!

    Bevallom a a VS C++ részével nem is foglalkoztam, engem a VS C# project érdekelt, mivel ez C topic. Megtisztelnél vele rendszerprogramozó kolléga(amúgy tényleg az vagy?), ha leírnád, hogyan kell Visual C# 2008-ban Console Application-t létrehozni, amiben a PRINTF használható, nem a WRITELINE. :U

    Fire.

    UI: utánanéztem amit írtál, ha Win32 Console App van létrehozva akkor "megy" a műsor, mármint VS c++-ban.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz Lortech #464 üzenetére

    Hali!

    Sajna erre nem kaptam választ:
    "hogyan kell Visual C# 2008-ban Console Application-t létrehozni, amiben a PRINTF használható, nem a WRITELINE."
    igen, az a gáz hogy ez is ebből "él"
    "A project for creating a command-line application (.NET Framework 3.5)"
    Így hozza létre a Console Application-t.
    Erre van valami ötleted?

    Fire.

    UI: Amúgy szakmádban(okleveles programozó) dolgozol, esetleg szabadúszó vagy?

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz Lortech #467 üzenetére

    Hali!

    Köszönöm a felvilágosítást, most már tiszta, hogy VS C#-ben kizárólag .NET Framework.
    (Azt hittem, hogy sima ANSI C nyelvet is lehet használni benne :W )
    Akkor marad, hogy VS C++-ban írunk ANSI C progit, "nekem a 9 is páros..." :DDD

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz !wannabe #469 üzenetére

    Hali!

    Én magam(már nem tudom pontosan mikor,de a 80-as évek közepe vége felé) C64-en kezdtem el programozni, assembly-ben. Volt egy kis csapat, amiben én a 1541-II-drive-ért voltam felelős, tehát lemezes műveletek. Akkor írtam az első 4 másodperces formattert, a 10 másodperces validator, a 14-szeres irq loadert(miközben szól a zene, tölt a drive) stb.
    Az egyik csapattag megvette első PC-jét(486dx4-100, 4 mega ram, 2x sony cd olvasó, s3 1megás vga, tomato alaplapmeg talán seagate vinyó), tudtam nekem is kell PC. Természetesen Assembly egyből, alig vártuk hogy a gamestar meg chip meg egyéb újságok lemezmellékleteit megnézhessük, mert nagyon sok hasznos uty ill doksi volt rajtuk.
    Borland assemblerrel kezdtem, aztán borland pascal, borland c/c++, borland delphi, borland builder.....és jelenleg is borland(ill. mostmár Codegear) cuccokkal dolgozom.

    Persze, én is assemblyben meg más nyelven is úgy kezdtem, hogy "töröljük le a képernyőt, írjuk ki hogy Helló!". Akkoriban a net nem volt elterjedt, hogy úgy mondjam csak a "kiváltságosok" rendelkeztek vele, elsősorban anyagi ill technikai feltételek miatt. Így lemezmellékletekről meg szakirodalomból tanultunk magunktól. Ha minden könyvet eladnék, ami most a szekrényen van, egy igen jó konfigot tudnék venni..., de nem adom.

    Sajnos a középiskolában szinte megutáltatták a informatikát ill matekot(ami abban merült ki, hogy valami videoton gépen egymás alá meg mellé kiirattuk 1-10-ig a számokat :DDD ).
    Sajnos azt látom, hogy jelengleg is ez a legnagyobb probléma, hiába van tehetsége, szorgalma, kitartása a számítástechnika(ezen belül programozás) iránt, a középiskolákban elveszik az ember kedvét tőle. Rossz tananyag, rosszul leadott jó tananyag, diákok érdektelensége....és még sorolhatnám.

    Neked anyyit javasolnék és minden kezdőnek, hogy a nyelv alapjait kell első körben tökéletesen elsajátítani, megérteni. Aztán ahhoz a nyelvhez kiválasztani a megfelelő fejlesztőkörnyezetet, amikor ez megvan, kitartani a Cég mellett, mert akár mennyire is szabvány pl a C++, de az jól látszik, hogy mennyire eltérnek a fejlesztőkörnyezetek egymástól. Itt a net, tessék használni, mindent meg lehet rajt találni. Aztán meg tessék kérdezni PH-en!(nekünk anno 30km-en belül nem volt senki, akit megkérdezhettünk volna :DDD ) Nem érdekes, ha értelmetlen dolgot kérdezel, akkor megmondják hogy ez értelmetlen, ezért meg ezért meg ezért, és így meg így kellene megoldani.
    Én is sok mindent megkérdezek és mindig kapok rá választ, sok mindent tanulok itt, noha elég rég óta üzöm az "ipart". Ebben a szakmában, minden nap jönnek ki újdonságok, fizikai képtelenség, hogy mindenhez értsen az ember.

    Van jó és van rossz tutorial. Én azokat létesítem előnyben, ahol képpel illusztrált, lépésről-lépésre magyarázó, forráskóddal fűszerezett(amit beillesztesz aztán műxik) stb dolgok találhatóak. Az egyik ilyen kedvenc oldalam ez: [www.functionx.com/]

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz !wannabe #471 üzenetére

    Hali!

    Úgy van ahogy a kolléga is mondja, azaz <= helyett <, vagy a a for ciklusban a sor és oszlop változót 1-ről indítsd.

    Ezt a sort meg javítsd printf( "+%n" );
    Nyíilván ezt akartad írni printf( "+\n" );

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz !wannabe #474 üzenetére

    Nos, egy sakktábla 8x8-as, gondolom ez nem ujdonság, tehát kell egy plusz sor az oszlop azonosítóknak (A-H) ill egy plusz oszlop a sor azonosítóknak(1-8).
    Viszont a oszlopnevek meg sorszámok (ha már nagyon szakszerűen akarsz eljárni), nem hasraütésre megy. Ha leraksz magad elé egy táblát, akkor a feléd eső oldalon a bal kezednél van az A1, ami fekete.(esetleg ha ki is akarod szinezni).
    Ha akarod tömbözhetsz is, de felesleges(ha csak nincs a tarsojodba valami más terv is a táblával kapcsolatban), simán minden sornál 8-től lefelé ill minden oszlopnál A-H ig kiírod pluszba.

    Fire.

    Közbe beugrott a kód, megnézem :DDD

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz !wannabe #475 üzenetére

    Alapvetően a kód jó, csak módosítani kell hogy tényleg "szabványos" sakktábla legyen.
    Ilyen legyen: [link]

    Fire.

    UI: remélem nem cseszegetésnek veszed, de legyünk precízek :DDD

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz !wannabe #478 üzenetére

    Hali!

    Egy "apróságot" nem tisztáztunk. Miben írunk? Dev c++ vagy VS c++?

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz !wannabe #480 üzenetére

    Rendben, csak azért kérdeztem, mert én teljesen megszokásból, használok cikluson belül deklarációt. PL: for(int i=1;i<=10;i++); Na ezt alapban a Dev c++ nem szereti, mert nem a régi c89 módot használja, hanem a c99-et. Ilenykor ezt a hibát dobja:
    for loop initial declaration used outside C99 mode

    A "hiba" megszüntethető, ha a compiler parancssorához hozzáadod a -std=c99 utasítást vagy kapcsolót, ahogy tetszik.

    A CodeBlocks nem tudom, hogy foglalkozik-e vele, próbáld ki... :K

    Fire.

    UI: Amúgy VS c++-ban írok C-t(most ismerkedem a környezettel), de a Dev c++ is fent van.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz rothkrisz #482 üzenetére

    Hali!

    A progi CodeBlocksban íródott. Bár írtad, hogy most kezdtél C-ben írni, de ennak ellenére úgy írtam, hogy legyen bent valami "újdonság" is, ami hasznos. Nézd át, ha valami nem tiszta írj.

    Fire.

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

    int main()
    {
    char str[255];
    unsigned char ndx[10];
    int i,j,maxndx;

    for(i=0;i<sizeof(ndx);ndx[i]=0, i++);
    printf("Enter numbers (0-9): ");
    gets(str);
    for (i=0;i<strlen(str);i++) {
    if (str[i]<'0' || str[i]>'9') {
    printf("Illegal char found, skipped.. -> %c\n",str[i]);
    continue;
    };
    ndx[str[i] & 0x0f]++;
    }

    //Horizontal
    for(i=0;i<sizeof(ndx);i++) {
    printf("\n%c ",i+'0');
    for (j=ndx[i];j>0;j--) { printf("*"); }
    }
    printf("\n\n\n");

    //Vertical
    for(i=0, maxndx=0;i<sizeof(ndx);i++) {
    maxndx=ndx[i]>=maxndx ? ndx[i] : maxndx;
    }
    for(;maxndx>0;maxndx--) {
    for(i=0;i<sizeof(ndx);i++) {
    ndx[i]<maxndx ? printf(" ") : printf("*");
    }
    printf("\n");
    }
    for(i=0;i<sizeof(ndx);printf("%c",'0'+i),i++);

    printf("\n");

    return 0;
    }

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz !wannabe #484 üzenetére

    Hali!

    Újra kellet pakolnom a vista-t, és még nem raktam fel a VS-t. (de lehet hogy nem is fogom, csak ha kell). Jó ez a CodeBlocks :D(Kösz mégegyszer, hogy javasoltad!)

    Ez a példa, függölegesen, meg vizszintesen is kiírja a számokat ill kirajzolja a csillagokat......
    (Horizontal/Vertical rész)
    Valamit félreértettem? :U

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz !wannabe #486 üzenetére

    Hali!

    Semmi gáz! Ismerős az érzés, Én is ha lefárasztom az agyam, 5-10 másodpercnek ell kell telnie, mire felismerem édesanyámat :D . Ha meg hirtelen kell felkelnem, akkor órákig "beszámíthatattlan" vagyok... :C

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz !wannabe #489 üzenetére

    Hali!

    Az ndx tömben van tárolva ugyebár, hogy melyik számjegy hányszor fordul elő.
    Mivel én STRING-ként olvasom be, ezért a '0'-'9' számjegyek a karakterkódjukkal vannak jelen a STRING-be, vagyis hexa 0x30-0x39. Ebből kell 0-9 indexet csinálni.
    pl

    a '9' ascii kódja 0x39 binárisan 00111001, a 0x0f binárisan 00001111

    00111001 AND 00001111 = 0000 1001 azaz 9.
    ( az AND ott lesz 1, ahol mindkét számban az azonos bitpozíción 1 van)
    tehát ebben az esetben az ndx[str[i] & 0x0f]++ az ndx[9]++ lesz, azaz a tömb 9. indexén lévő elem értékét megnöveli egyel.

    Meg lehetett volna így is oldani ndx[str[i]-0x30]++ vagy ndx[str[i]-'0']++
    Csak azért választottam az AND-es módszert, mert a logikai műveletek fontos része minden programozási nyelvnek(AND, OR, XOR, NOT stb)

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz D@ni88 #493 üzenetére

    Hali!

    Nincs baj azzal a strupr() függvénnyel, csak a bemenete (char*). Így használd:

    #include <iostream>

    using namespace std;

    int main()
    {
    char str[]="Test text";

    cout << strlwr((char*)str) << endl;
    cout << strupr((char*)str) << endl;

    return 0;
    }

    Ebből gondolom nyílvánvaló, hogy mit kell módosítanod a kódodban.

    Azonban ez valóban C programozás topic, van C++ topic is, oda tedd a C++ kérdéseket.
    Ígérem ott is ránézek, és ha tudok segítek.

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz doc #502 üzenetére

    Hali!

    Hát szomorú ha nem hallottál róla, a MATH.H-ban van. Egy lebegőpontos számot "oszt" két részre, egész ill törtrészre. (vagy egyszerűbben a tizedespont jobb oldalára ill bal oldalára)
    persze abban egyetértek, hogy eldönteni egy számról, hogy páros vagy páratlan tök felesleges használni(de lehet)

    Fire.

    UI: amargo kódja, már kerekítéssel is foglalkozik(0,5-től felfelé kerekítünk, egyébként meg lefeleé)
    Annyi "kritika", ha valami NEM NAGYOBB EGYENLŐ MINT 0,5, akkor felesleges az ELSE után az összehasonlítás.... :DDD (Amargo kódjáról van szó)

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz rothkrisz #511 üzenetére

    Hali!

    Kellemes feladatokat kaptok, nekem is jó, mert "retrózhatok". :DDD
    Nos, több megoldása is lehet a feladatnak, Én az alábbi módszert választottam, elsősorban mert x64 Vista alatt ne futnak a DOS-os c/cpp editorok, ebből adódóan a kurzorpozicíóval, assembly betéttel, megszakításokkal nem tudok mit kezdeni.(ugyanis úgy is meg lehetett volna oldani, hogy egyből megjelenik a tábla, és egyből megjelenik rajt a bevitt mezőn az "érme"....)

    Lesz bent egy teljesen kikommentezett rész, azt csak azért hagytam bent, hogy még egy mátrix definíciót is láss. Sajna ott viszont már "keményen" mútatókkal lehet volna csak operálni, és ha valaki nincs tisztában velük, akkor tényleg nem fog érteni belőle semmit....

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

    #define CB_XY 17

    /*
    unsigned char ChessBoard_Matrix[][CB_XY]={
    "╔","═","╦","═","╦","═","╦","═","╦","═","╦","═","╦","═","╦","═","╗",
    "║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
    "╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
    "║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
    "╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
    "║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
    "╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
    "║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
    "╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
    "║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
    "╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
    "║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
    "╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
    "║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
    "╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
    "║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
    "╚","═","╩","═","╩","═","╩","═","╩","═","╩","═","╩","═","╩","═","╝"

    };
    */

    int ChessBoard_Matrix[CB_XY][CB_XY]={
    {0xC9,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xBB},
    {0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
    {0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
    {0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
    {0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
    {0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
    {0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
    {0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
    {0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
    {0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
    {0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
    {0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
    {0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
    {0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
    {0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
    {0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
    {0xC8,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xBC}

    };

    int main()
    {
    int i,j,k;
    char str[256];

    while(0==0) {
    printf("Enter coordinate and value: ");
    strupr(gets(str));
    if (str[0]=='*') { printf("\nGenerating Chessboard\n\n"); break; }
    if (!strlen(str) || strlen(str)>3) { printf("Bad SIZE found [%s=>%d], skipped...\n",str,strlen(str)); continue; }
    if (str[0]<'A' || str[0]>'H') { printf("Bad COLUMN found [%c], skipped...\n",str[0]); continue; }
    if (str[1]<'1' || str[1]>'8') { printf("Bad ROW found [%c], skipped...\n",str[1]); continue; }
    if (str[2]!='1' && str[2]!='2' && str[2]!='5') { printf("Bad VALUE found [%c], skipped...\n",str[2]); continue; }

    ChessBoard_Matrix[('8'-str[1])*2+1][(str[0]-'A')*2+1]=str[2];
    }

    for(i=0,k=8;i<CB_XY;i++) {
    if ((i % 2)) printf("%d ",k--);
    else printf(" ");
    for(j=0;j<CB_XY;j++)
    printf("%c",ChessBoard_Matrix[i][j]);
    printf("\n");
    }
    for(printf(" "),i=0;i<8;printf("%c ",'A'+i),i++);

    printf("\n\n");

    return 0;
    }

    Fire.

    UI: remélem jól értelmeztem a feladatot... :U

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz rothkrisz #511 üzenetére

    Hali!

    Elnézésedet kérem, de voltam olyan ügyes, hogy nem olvastam el a privát üzeneted. :W
    Majd ránézek ígérem, mert az általam kreált kód, "enyhén szólva" nem hasonlít a forrásodra a privátban.

    Mégegyszer, bocsi! :(((

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz Fire/SOUL/CD #513 üzenetére

    Hali!

    Küldtem privbe.

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz ltz400 #515 üzenetére

    Hali!

    Még az a páros-páratlan dolog érdekel? Esetleg a "teljes" forrás érdekel?
    Írd le mégegyszer légyszives(vagy link), ha tudok segítek...

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz speedtouch #518 üzenetére

    Hali!

    Sajna VS-ben nem dolgozom, de ha egy példával illusztrálnád, hogy VS-ben mi is az a LDC formátum, az sokat segítene... :DDD

    pl: 1234567 a szám és ebből lesz 1980.01.01 vagy valami

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz speedtouch #520 üzenetére

    Hali!

    :DDD :DDD :DDD
    Így már más, LCD nem LDC, így érthető...

    .NET-be sajna nem tudok segíteni(ezért most nem pakolom fel a VS-t), de ha sima C megfelel, akkor oké.

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz speedtouch #522 üzenetére

    Hali!

    A kód Code::blocks-ban íródott, sima Ansi C. Ha valami nem érthető esetleg, akkor írj nyugodtan.

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

    #define CS_Y 38
    #define CS_X 5

    int LCD_Digits[CS_X][CS_Y]={
    {0x20,0xC9,0xCD,0xBB, 0x20,0xCB, 0x20,0xCD,0xCD,0xBB, 0x20,0xCD,0xCD,0xBB, 0x20,0xCB,0x20,0xCB, 0x20,0xC9,0xCD,0xCD, 0x20,0xC9,0xCD,0xCD, 0x20,0xCD,0xCD,0xBB, 0x20,0xC9,0xCD,0xBB, 0x20,0xC9,0xCD,0xBB},
    {0x20,0xBA,0x20,0xBA, 0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0xBA,0x20,0x20, 0x20,0xBA,0x20,0x20, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0xBA,0x20,0xBA},
    {0x20,0xBA,0x20,0xBA, 0x20,0xBA, 0x20,0xC9,0xCD,0xBC, 0x20,0xCD,0xCD,0xB9, 0x20,0xC8,0xCD,0xB9, 0x20,0xC8,0xCD,0xBB, 0x20,0xCC,0xCD,0xBB, 0x20,0x20,0x20,0xBA, 0x20,0xCC,0xCD,0xB9, 0x20,0xC8,0xCD,0xB9},
    {0x20,0xBA,0x20,0xBA, 0x20,0xBA, 0x20,0xBA,0x20,0x20, 0x20,0x20,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0x20,0x20,0xBA},
    {0x20,0xC8,0xCD,0xBC, 0x20,0xCA, 0x20,0xC8,0xCD,0xCD, 0x20,0xCD,0xCD,0xBC, 0x20,0x20,0x20,0xCA, 0x20,0xCD,0xCD,0xBC, 0x20,0xC8,0xCD,0xBC, 0x20,0x20,0x20,0xCA, 0x20,0xC8,0xCD,0xBC, 0x20,0xCD,0xCD,0xBC}

    };

    int main()
    {
    int i,j,LCD_Digit_Index,LCD_Digit_Width,k;
    char num[255];

    printf("Type INTEGER number: ");

    if (!strlen(gets(num))) {
    printf("\n\nINTEGER not found...\nShow all LCD digits and EXIT\n\n");
    for (i=0;i<CS_X;i++) {
    for (j=0;j<CS_Y;j++)
    printf("%c",LCD_Digits[i][j]);
    printf("\n");
    }
    return -1;
    }

    printf("\n\n");
    for (i=0;i<strlen(num);i++)
    if(num[i]<'0' || num[i]>'9') {
    printf("Is NAN [Not A Number]...\nEXIT");
    return -1;
    }

    for (i=0;i<CS_X;i++) {
    for (j=0;j<strlen(num);j++) {
    LCD_Digit_Index = num[j]-'0'>1 ? (num[j]-'0')*4-2 : (num[j]-'0')*4;
    LCD_Digit_Width = num[j]-'0'==1 ? 2 : 4;
    for (k=0;k<LCD_Digit_Width;k++)
    printf("%c",LCD_Digits[i][LCD_Digit_Index+k]);
    }
    printf("\n");
    }

    return 0;
    }

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz cellpeti #538 üzenetére

    Hali!

    Gyorsan megcsináltam(több megoldás is létezik persze), mielött ellépek itthonról. Ha valami nem tiszta írj. Késő este vagy holnap leszek majd.
    (mivel ez csak példa, nem foglalkoztam azzal hogy kitudja mekkora számot lehessen beírni, ezért 2 gigánál nagyobbat ne írj be, mert hibásan fog működni. Bár kipróbálhatod :DDD )

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

    #define C_Y 14

    int cimlet[C_Y] = {20000,10000,5000,2000,1000,500,200,100,50,20,10,5,2,1};
    int hanyszor[C_Y] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0,0,0};

    int main()
    {
    long int i, cash;
    char money[255];

    printf("Enter money: ");

    if (!strlen(gets(money))) {
    printf("\n\nMoney not found...EXIT");
    return -1;
    }
    printf("\n\n");
    for (i=0;i<strlen(money);i++)
    if(money[i]<'0' || money[i]>'9') {
    printf("Is NAN [Not A Number]...\nEXIT");
    return -1;
    }

    cash=atoi(money);

    for (i=0;i<C_Y;i++) {
    hanyszor[i]=cash / cimlet[i];
    cash-=hanyszor[i]*cimlet[i];
    if (hanyszor[i]) printf("%5d db\t %d\n",hanyszor[i],cimlet[i]);
    }

    return 0;
    }

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz sghc_toma #540 üzenetére

    Hali!

    Esetleg meg is tudnád mutatni, hogy a kódom hogy "gyárt" overflow-t?

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz sghc_toma #543 üzenetére

    Hali!

    Elöször is bocsesz a "költői visszakérdezésért", de már előfordult, hogy valaki minden szakmai alapot nélkülöző hozzászólással gazdagított, amikor meg visszakérdeztem, hogy hát azért mégis elmagyarázhatná nekem(amúgy nem kellett volna) hogy hogyis van az, na azóta nem hallottam felőle.
    Való igaz (ahogy Te illetve dabadab kolléga is írta) a GETS magában rejti ezt a fajta hibalehetőséget, de csak ezt, és ez jól látható(money[255]). Nyílván nem létezik olyan bankautomata amibe be lehet írni 255 számjegyből álló összeget, hogy adja ki 20ezresekbe, vagy ha igen szóljatok, mert kérek kölcsön egy MTZ traktort azt elhozzuk, mert akkor k... sok pénz van benne... :DDD

    Azért nem szeretem a pl SCANF-t, mert az viszont rejtett "hibákat" tartalmaz és aki most ismerkedik a C-vel(lásd CELLPETI) azt nem tudhatja(mert sajnos a informatika vagy prográmozást oktató tanárbácsik is gyakran megfeletkeznek ennek elmagyarázásáról). Mire gondolok? Hát például Te is említést teszel ama bizonyos STDIN-ről ugyebár, amit a SCANF is "használ". Ha valaki tényleg korrekt INPUT-ot akar írni, annak erre oda kell figyelni. egy példával illusztrálom:

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

    int main()
    {
    int n1,n2;

    do {
    printf("Enter 2 numbers [num1,num2]: ");
    if (scanf("%d,%d",&n1,&n2)!=2) {
    printf("Bad INPUT, try again or * to EXIT...\n");
    continue;
    }
    printf("SUM(%d,%d) = %d\n",n1,n2,n1+n2);
    } while (getch()!='*');
    return 0;
    }

    Nos, első ránézésre hibátlan, de mégsem. A következőképp működik az adott értékek mellett:
    ha 5,7 akkor hibátlanul fut
    ha 12345678901,12345678901, akkor hibás eredmény
    ha a,b akkor hibás működés
    ha 5.0,7.0 akkor hibás működés

    A hibás értékkel nem kell foglalkozni, az nyílvánvaló, azonban mi okozza a hibás működést? Nos annyit elárulok hogy a STDIN.
    Természetesen nem Tőletek kérdem a megoldást(hisz biztosan tudjátok), hanem azoktól a leendő programozópalántáktól akik most ismerkednek a C-vel, és remélhetőleg elolvassák mások szakmai hozzászólását.
    Szóval ezzel csak azt akartam illusztrálni, hogy kézenfekvő alap C input fx-ek is megtudják nehezíteni az ember életét, és ráadásul ezt úgy teszik hogy amúgy a kód hibátlan(vagy annak tűnik)

    Nos ezért szoktam kezdő programozóknál inkább a GETS-et alkalmazni.

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz rothkrisz #566 üzenetére

    Hali!

    Küldtem privbe.

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz blaces #569 üzenetére

    Hali!

    Használd a getch()-t csak így simán, ez egy billentyűleütésre vár.
    Codeblocks alkalmas rá, mert amikor új projectet kreálsz, akkor kiválasztható, hogy C vagy C++ project legyen.

    magyarul függvényleírást meg keresgélek, bár nem ártana az angol alapfok :DDD

    Fire.

    UI: bár ha megvan a "Programozzunk C nyelven" című könyv, akkor nem ártana a 483. oldaltól átolvasni(ott vannak a függvények leírása) :DDD

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz Benmartin #572 üzenetére

    Hali!

    Nos, a getch() ill a conio.h mióta C létezik azóta van és használják. Még a tankönyvek is mindenféle extra magyarázat nélkül alkalmazzák. Persze ma 2008-at írunk, és nem 1990-es évek elején vagyunk. Ezért teljesen egyetértek veled abban, hogy manapság(de csakis manapság), már más megoldásokkal kell(ene) operálni.
    Az viszont elég szomorú, hogy 2008-ban olyan feladatokat kapnak a tanulók, amikhez Console Application-okhoz kell nyúlni :(

    "márpedig egyetemen úgy tudom standard ANSI C-t tanítanak."
    Ehhez annyi a hozzáfűznivalóm, hogy ha ANSI C-t vagy CPP-t is tanítanak, akkor legalább olyan fejlesztőkörnyezetek segítségével(CodeGear Builder, VS C#, VS CPP) mutatnák meg a programozás rejtelmeit, szépségeit, amiket a későbbiekben hasznosítani is lehet. :(((

    Mire gondolok? példáúl: írjuk ki 1-től 10-ig a számokat. Primitív feladat. De akkor legalább tennék hozzá hogy mondjuk egy StringGrid objektumban, annak legalább van értelme, nem pedig 80x25-ös karakteres képernyőn "maszatolni". A FOR ciklus ugyanaz, de legalább megismerkedne egy objektummal is egyúttal, ami hasznos is. Vagy

    A korábbiakban volt olyan feladat hogy "sakktáblát" kellen kirajzolni, azon elhelyezni valamilyen betűt. Lehet pixelekkel dolgozni, ha ki tud rakni egy pixelt, adott színnel, adott helyre, akkor ki tud rajzolni is egy sakktáblát is(ami legalább hasonlít is valamelyest :DDD ), azután megtanulna két pixelt összekötni, már tudna vonalat rajzolni, ha tud vonalat rajzolni akkor azt meg lehetne forgatni 3D-be is, ha az is megy és tetszik a dolog, akkor meg neki lehet ugrani a DirectX programozásnak is... De nem, inkább a scanf() fx-t tanulja meg mert az fontos... :W

    Tudom, hogy ezt most nagyon leegyszerűsítettem, de remélem a lényeg érthető belőle.

    Mégegyszer: teljesen egyetértek a hozzászólásoddal, csak ez úgy "kikivánkozott" belőlem.

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz PazsitZ #577 üzenetére

    Hali!

    Azért megy nálad, mert Te idézőjeleket használsz(ahogy kell), a rossz kódba meg valami dupla "valami" van(nem idézőjel), ahogy Lortech kolléga is említí.

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz PazsitZ #579 üzenetére

    Hali!

    Azt hiszem Blaces mester az ALT GR+ö billentyűkombinációval varázsolt :DDD , nem a SHIFT+2-vel.

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz blaces #581 üzenetére

    Hali!

    ha nem jó, akkor telepítsd újra. Innen letöltheted :[link]
    Lehetőleg a MinGW-s változatot töltsd le, mert abban bent van GCC compiler meg a GDB debugger is, amit normálisan a telpítés után konfigurál is.

    Ha megvan indítsd el, aztán settings/compiler and debugger/toolchain executables fülön auto-detect gomb, okézd le aztán próbáld meg újra létrehozni egy új projectet.

    Fire.

    UI: gondolom nem egy létező project nevével akarsz új projectet létrehozni? :U

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz Gergello #596 üzenetére

    Hali!

    Nincs baj azzal amit írsz, csak ugye le kellene ellenőrizni, hogy van-e helyes adat a STR-be.
    Ezt megteheted a strlen() függvénnyel, vagy ahogy a példa mutatja, magával a scanf()-el is.
    A scanf() egy egésszel tér vissza, mely jelzi, hogy hány értéket tudott feldolgozni.
    (ha egyszerre pl 5 adatot kérsz be scanf()-el, akkor 5-tel tér vissza, ha minden oké volt)
    Jelen esetben 1-gyel fog visszatérni, ha a bevitt szöveg megfelel a scanf()-ben megadott szűrésnek.

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

    int main()
    {
    char str[256];

    printf("Kérem a szöveget: ");
    if (scanf("%20[a-z]",str)!=1) {
    printf("Hibás adatbevitel");
    return -1;
    }
    printf(str);
    return 0;
    }

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz rallye #621 üzenetére

    Hali!

    Ezt nézd meg, innen meríthetsz ihletet: [link]

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz Orc #645 üzenetére

    Hali!

    Remélem erre gondoltál, lista-szerkezetnek vagy láncolt listának(ahogy tetszik) hívják.

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

    struct Alma {
    int value;
    struct Alma *next;
    };

    int main()
    {
    struct Alma KORTE[2];

    KORTE[0].value=10;
    KORTE[0].next=&KORTE[1];
    KORTE[1].value=20;
    KORTE[1].next=NULL;

    printf("Korte 1 erteke: %d\n",KORTE[1].value);

    (KORTE[0].next)->value=30;
    printf("Korte 1 erteke uj ertke: %d\n",KORTE[1].value);

    return 0;
    }

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz Orc #647 üzenetére

    Hali!

    Akkor remélem ez megfelel, másra már nem tudok gondolni... :F
    Bocsi ha megint mellétrafálnék... :DDD

    #include <iostream>
    using namespace std;

    typedef class T_ALMA {
    int i, j;
    public:
    void beallit(int a, int b) {
    i = a;
    j = b;
    }
    void almakiir() {
    cout << "En a T_ALMA vagyok: ";
    cout << i << " " << j << endl;
    }
    }ALMA;

    typedef class T_KORTE : public ALMA {
    public:
    void kortekiir() {
    cout << "En a T_KORTE vagyok\n";
    }
    }KORTE;

    int main()
    {
    KORTE kortek[2];

    kortek[0].beallit(1,2);
    kortek[1].beallit(3,4);
    kortek[0].almakiir();
    kortek[1].almakiir();
    kortek[0].kortekiir();
    kortek[1].kortekiir();

    return 0;
    }

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz kékfej #650 üzenetére

    Hali!

    Ezt javasolnám: [codeblocks-8.02mingw-setup.exe]
    Free C/C++ IDE fejlesztőkörnyezet, ebben az installerben bent van a Compiler illetve linker, automatikusan telepedik, nem kell semmit állítani.
    Ha csak HTML és CSS, ahogy írtad, ahhoz nem kell C programozási ismeret, azonban a PHP, JavaScript, Flash ActionScript stb nyelvek esetén nagy előny.

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz babyanigirl #689 üzenetére

    Hali!

    Jó pár hozzáfűzni valóm lett volna, ezért inkább megírtam és a kommentekben elolvashatod.

    Ha valami nem érthető, vagy más kérdésed is lenne, akkor nyugodtan írj, ahogy időm engedi válaszolok. (meg biztosan mások is)

    Bocs de nem tudom berakni a kódot csak valami maszat lesz, még próbálkozom.

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz babyanigirl #689 üzenetére

    Hali!

    Na csak meg lett. Olyan kód volt a forrásba, amit a PH is használ formázásra...

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

    //ha többször használod ugyanazt az értket, akkor azt célszerű így definiálni
    //így megelőzhető az elgépelésekből adodó hibák
    #define MAXCHAR 256

    int CharCounter[MAXCHAR];

    int main()
    {
    int i;
    //a karakterek(így a betűk, számok, stb) egy byte-on tárolódnak az értékük 0-255 lehet
    //ezért nem int típust, hanem unsigned char típust deklarálunk
    unsigned char ch;
    FILE * TextFileAsBinary;
    FILE * OutputTextFile;

    printf("Karakter-szamlalo\n\n");

    //kinullázzuk a tömbünket. ez azonban jelen esetben teljesen felesleges
    //mivel a fórdító automatikusan elvégzi ezt a feladatot. Természetesen ha
    //többször kellene használni a tömböt, akkor szükséges lehet az "újranullázás"
    for (i=0;i<MAXCHAR;CharCounter[i++]=0);

    //minden fájl megnyitásakor kötelező a hibaellenőrzés!
    if (!(TextFileAsBinary = fopen("input.txt","rb"))) {
    fprintf(stderr,"Nem lehet megnyitni a fajlt...");
    exit(-1);
    }
    //az fread függvény (jelen esetben) 1 darab, 1 byte hosszú adatot olvas be ch-be
    //a korábban megnyitott "input.txt" fájlból
    //a visszatérő értéke olvasás esetén mindig annyi, amennyit megadtunk neki
    //jelen esetben 1. Ha nem ennyivel tér vissza, az azt jelenti, hogy a fájl végére értünk
    //vagy valamilyen fájlolvasási hiba lépett fel
    while (fread(&ch,1,1,TextFileAsBinary)==1) CharCounter[ch]++;
    fclose(TextFileAsBinary);

    //kimeneti fájl megnyitása, mindig kérdés nélkül felülírodik!
    if (!(OutputTextFile = fopen("output.txt","wt"))) {
    fprintf(stderr,"Nem lehet irni a fajlt...");
    exit(-1);
    }
    //itt azért 16-ról indítom a ciklust, mert ez alatt többnyire karakteres vezérlőkódok
    //találhatók(return, tab, sipolás, visszatörlés stb), amikor ezeket beleírnád a fájlba
    //akkor furcsán mutatna
    for (i=16;i<MAXCHAR;i++) {
    //csak akkor írok fájlba, ha előfordult az 'i' karakter, ha nem akkor felesleges
    if (CharCounter[i]) {
    fprintf(OutputTextFile,"Gyakorisága a(z) %c karakternek: %d\n",i,CharCounter[i]);
    }
    }
    fclose(OutputTextFile);

    return 0;
    }

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz kiskatus #692 üzenetére

    Hali!

    Azt írtad, hogy Angol szöveg. Ezt azt jelenti, hogy soronként kell összehasonlítanod?
    Tehát pl mindkét fájlban email címek vannak.

    1.fájl
    a@b.cc
    b@c.dd
    c@d.ee

    2.fájl
    a@b.cc
    b@c.XX
    c@d.ee

    3.fájl(kimeneti fájl)
    különbség -> b@c.dd <> b@c.XX

    vagy esetleg byte-onként(binary compare)? Ez esetben teljesen mindegy milyen fájlról van szó, lényegtelen hogy szöveg, kép, hang stb.

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz kiskatus #694 üzenetére

    Hali!

    Köszi a választ, na így egyértelmű, mivel KARAKTERENKÉNT kell összehasonlítani, azaz bináris összehasonlítást kell írni.

    Délutánra meglesz.

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz cellpeti #695 üzenetére

    Hali!

    Bocsi, de ezt nem értem?!! Miért vagyok kész? :U

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz kiskatus #698 üzenetére

    Hali!

    Na, elkészültem, az elején azonban pár szó...
    Ezt úgy írtam ahogy kérted, tehát karakterenként olvas, azonban az ilyen jellegű progikat nem így írják. Ez a progi pár ezer byte-os fájlokon gyorsnak tűnhet, de ha pl 2 darab 50 megás fájl-t kellene összehasonlítania, akkor elidőzhet előtte az ember, a karakteres olvasásnak köszönhetően. A gyors FileComparer progikban dinamikusan lefoglalnak memóriából 2 nagyobb "darabot" a un bufferek számára. Ezekbe a bufferekbe olvassák be az adatokat a fájlokból(nem egyesével, hanem amekkora buffer, mondjuk 4mega) és a két buffert hasonlítják össze, ami nagyon gyors hisz a memóriában van.
    Természetesen ezt csak plusz INFO-nak szántam.
    Felkommenteztem, remélem érthető is lesz. Persze ha van kérdésed akkor írj nyugodtan.

    Fire.

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

    int main()
    {
    unsigned long ErrorCounter;
    unsigned char chFirst, chSecond;
    FILE * FirstFileAsBinary;
    FILE * SecondFileAsBinary;
    FILE * ErrorFileAsText;

    printf("Binaris osszehasonlitas\n\n");

    //első fájl megnyitása binárisan
    //minden fájl megnyitásakor kötelező a hibaellenőrzés!
    if (!(FirstFileAsBinary = fopen("first.txt","rb"))) {
    //nem sikerült megnyitni az első fájlt, ezért hibakiírás, kilépés
    fprintf(stderr,"Nem lehet megnyitni a 'first.txt' fajlt...");
    exit(-1);
    }
    //második fájl megnyitása binárisan
    //minden fájl megnyitásakor kötelező a hibaellenőrzés!
    if (!(SecondFileAsBinary = fopen("second.txt","rb"))) {
    fprintf(stderr,"Nem lehet megnyitni a 'second.txt' fajlt...");
    //nem sikerült megnyitni a második fájlt, ezért hibakiírás, kilépés
    //de elötte a korábban sikeresen megnyitott első fájlt le kell zárni
    fclose(FirstFileAsBinary);
    exit(-1);
    }
    //a fseek a fájlban pozicionál, meg kell adni
    //hogy melyik fájlban, egy relatív távolságot, és hogy honnan
    //alábbi esetben a FirstFileAsBinary fájlban, a végétől(SEEK_END), 0 bytera
    //azaz magyarul a fájl végére pozícionálunk, amit azért teszünk, hogy a továbbiakban
    //az ftell függvénnyel(ami az épp aktuális fájlpoziciót adja vissza) meg tudjuk
    //határozni a fájl hosszát
    fseek(FirstFileAsBinary,0,SEEK_END);
    fseek(SecondFileAsBinary,0,SEEK_END);
    //megnézzük, hogy a két fájl mérete azonos-e, mivel ha nem
    //akkor nincs értelme összehasonlítani őket
    if (ftell(FirstFileAsBinary)!=ftell(SecondFileAsBinary)) {
    printf("A két fájl mérete nem azonos...");
    //nem azonos méretű a két fájl, ezért hibakiírás, kilépés
    //de elötte a korábban sikeresen megnyitott első és második fájlt le kell zárni
    fclose(FirstFileAsBinary);
    fclose(SecondFileAsBinary);
    exit(-1);
    }
    //itt azt ellenőrizzük, hogy ne legyen 0 byte hosszú a fájl, hisz akkor megint csak
    //nincs értelme az összehasonlításnak
    //azért csak az egyik fájlt ellenőrzöm, mert az előzőekben már kiderült, hogy
    //a két fájl egyenlő méretű, és ha az első fájl netalántán 0 byte hosszú
    //akkor a második is
    if (!ftell(FirstFileAsBinary)) {
    printf("A fajlok merete nem lehet 0 byte...");
    //0 byte méretű mindkét fájl, ezért hibakiírás, kilépés
    //de elötte a korábban sikeresen megnyitott első és második fájlt le kell zárni
    fclose(FirstFileAsBinary);
    fclose(SecondFileAsBinary);
    exit(-1);
    }
    //most a fájlpoziciót visszaállítom a fájl elejére, azaz 0 byte-ra a fájl elejétől(SEEK_SET)
    //azért kell megtenni, mert korábban a fájl végére pozicionáltam
    fseek(FirstFileAsBinary,0,SEEK_SET);
    fseek(SecondFileAsBinary,0,SEEK_SET);
    //létrehozom azt a fájlt szövegesként, amibe az esetleges eltéréseket letároljuk
    if (!(ErrorFileAsText = fopen("error.txt","wt"))) {
    fprintf(stderr,"Nem lehet megnyitni az 'error.txt' fajlt...");
    //nem sikerült létrehozni a fájlt, ezért hibakiírás, kilépés
    //de elötte a korábban sikeresen megnyitott első és második fájlt le kell zárni
    fclose(FirstFileAsBinary);
    fclose(SecondFileAsBinary);
    exit(-1);
    }
    //hibaszámláló nullázása, a későbbiekben használom
    ErrorCounter=0;
    //az fread függvény (jelen esetben) 1 darab, 1 byte hosszú adatot olvas be
    //jelen esetben a chFirst, chSecond változóba, az első ill második fájlból
    //a visszatérő értéke olvasás esetén mindig annyi, amennyit megadtunk neki
    //jelen esetben 1. Ha nem ennyivel tér vissza, az azt jelenti, hogy a fájl végére értünk
    //vagy valamilyen fájlolvasási hiba lépett fel
    while (fread(&chFirst,1,1,FirstFileAsBinary)==1) {
    fread(&chSecond,1,1,SecondFileAsBinary);
    //összehasonlítjuk a két byte-ot
    if (chFirst!=chSecond) {
    //ha nem egyenlő, akkor kiírjuk az error.txt fájlba, méghozzá a következő módon
    //filepozició,chFirst,chSecond
    //a filepoziciót 0x-el kezdődő 8 számjegyes hexadecimális számként
    //a chFisrt, chSecond pedig 0x-el kezdődő 2 számjegyes hexadecimális számként
    fprintf(ErrorFileAsText,"File-pozicio: %#.8lx %#.2x <> %#.2x\n",ftell(FirstFileAsBinary),chFirst,chSecond);
    //hibaszámláló növelése
    ErrorCounter++;
    }
    }
    //ha a hibaszámláló nem 0, akkor kiírjuk hány eltérés van a két fájl közt
    if (ErrorCounter) printf("%lu elteres talalhato a ket fajl kozt.\nNezze meg az 'error.txt' fajl tartalmat...",ErrorCounter);
    //ha a hibaszámláló 0, akkor nincs különbség a két fájl tartalma közt
    else printf("A ket fajl azonos...");

    //mindhárom korábban sikeresen megnyitott fájl lezárása
    fclose(FirstFileAsBinary);
    fclose(SecondFileAsBinary);
    fclose(ErrorFileAsText);

    //várakozás ENTER-re
    printf("\n\nUsson ENTER-t a kilepeshez...");
    getchar();

    return 0;
    }

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz kiskatus #702 üzenetére

    Hali!

    Miben is írsz?

    Fire.

    UI: remélem a "bemásolás" alatt azt érted, hogy kijelölöd a kódót a HSZ-ben, jobb egér/másol
    aztán a fejlesztőkörnyezetben meg egy üres xxxxxx.C fájlba beilleszted(jobb egér/beillesztés? :U

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz kiskatus #702 üzenetére

    Hali!

    Minden olyan sor elé, ahol az exit(-1) van, tegyél be egy getchar() -t.
    Bocsi, az én hibám, csak mindig elfeledkezem, hogy a CodeBlocks nem csukja be az ablakot automatikusan, más fejlesztőkörnyezet meg esetleg igen.... :W

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz kiskatus #705 üzenetére

    Hali!

    #704 HSZ

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz kiskatus #707 üzenetére

    Hali!

    Na akkor már sínen vagyunk! :DDD
    Létre kell hoznod egy first.txt nevű fájlt, abban a könyvtárban ahol a forrásfájl(C) van vagy oda ahova az exe generálódik.(esetenként ez ugyanaz a könyvtár)
    Ha ez megvan és megint elindítod, akkor keresni fogja a second.txt fájlt, azt is hozd létre.
    Ez a két fájl amit a progi összehasonlít. Írjál beléjük valamit, mondjuk az egyikbe egy 'a' a másikba egy 'b' betűt. Ha most futtatod, akkor kiírja a végén, hogy egy eltérés van, létrehoz egy error.txt nevű fájlt, amibe ha belekukkantasz akkor bent lesz, hogy hol van eltérés és mi

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz kiskatus #709 üzenetére

    Hali!

    Na, akkor elöször kiderítjük, hogy hol jön létre az exe fájl.
    Hova mented a forrásfájl-t? Milyen könyvtárba?
    Na ebbe a könyvtárba kell létrehozni a first.txt meg a second.txt fájlokat

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

Új hozzászólás Aktív témák