Jump to content
GSForum - Segélyvonal

Programozás C/C++-ban


Recommended Posts

dr. axel coon
Posted

A while hiányzik?

 

for (....... i++)
{
itt történnek a dolgok
}
{while (i==hanyszor)
}

 

A hanyszor változóba beírt számszor kéne lefutnia. Több ötletem már nincsen igazából, össze-vissza 2 órám volt eddig programozás (ezelőtt sosem csináltam), szóval minimális háttérismeretre hagyatkozhatom. Egyáltalán jól sejtem, hogy a feltétel azt jelenti, hányszor fut le a ciklus? Ha nem akkor mi az egészen pontosan a for után zárójelben?

 

Szerk: még annyit hozzátennék, hogy az elején a i=0-t i=1-re módosítanám tehát

For (i=1,i==hanyszor,i++)

eztán meg a while

Posted

Igen látom nagy turmix van az agyadban. :) Sebaj majd alakul az. A while is egy ciklus, csak azt másra szoktuk használni. Hogyha visszaolvasod az elsõ válaszom, akkor láthatod a for ciklus definícióját, amiben le van írva, hogy melyik a feltétel. Azt kell módosítanod, mert az nem jó a programodban. Futtatsd le az agyadbana programot, figyeld a változókat, és a feltételeket. (Vedd figyelembe azt is, amit Balázs írt a for ciklusban, hogy a ciklusmag lefutása után növeli a ciklusváltozót.) Így biztosan rá fogsz jönni.

dr. axel coon
Posted

Tehát végülis a For (i=1,i==hanyszor,i++) -ból azt mondod csak az "i==hanyszor" a nem jó?

Posted

Hadd kérdezzem már meg, hogy melyik oktatási intézmény az, amelyik már megint ilyen iszonyúan hozzáértő módon nyúl a témához?

 

Egyébként a fenti példád már jó (eltekintve attól, hogy pontosvesszővel választjuk el a dolgokat a for ciklus utáni zárójelben), de nem kezdem el magyarázni, mert szemlátomást azok az alapok sincsenek még meg, amikre a ciklus mint alap vezérlőszerkezet megtanítását építeni lehetne. :( Nem tudom, hogy azért, mert tényleg kutyaütő módon tanítanak ott, ahova jársz, vagy azért, mert nem figyeltél oda, a végeredmény szempontjából sajnos mindegy...

 

A ciklusok oktatásának megvan a saját metodikája, és biztosan nem az az első lépés, egy ilyen relatíve pofonegyszerű, azonban egy kezdőnek nagyon is összetett feladatot kelljen megoldani. Mondjuk: írjuk ki 1-től 10-ig a számokat, aztán ugyanezt visszafelé, aztán kettesével, aztán kérjük be, hogy mettől meddig és hányasával, aztán ne csak kiírjuk őket, hanem csináljunk valamilyen műveletet is velük, és ha ez már mind megvan, és az ember kisujjból ír for ciklusokat, akkor lehet kezdeni bonyolítani.

dr. axel coon
Posted

Tehát akkor az előbb leírt módon már jó lesz?

 

Hát intézménynevet nem mondanék mert ki tudja ki olvassa rajtunk kívül, nem akarom, hogy azt mondják sz@rkeverő vagyok. Különben a legnagyobb gond nem a gyakorlati órával van, hanem avval, hogy nem adnak ki épkézláb jegyzeteket, amiből óra után szépen olvasgatva otthon leülepedhetnének az emberfiában az elhangzottak. Olyan kellene ami specifikusabban a tantárgy tematikájára épít és közérthetően magyaráz. Azt mondták az oktatók ez felesleges, a net tele van ilyesmivel. Én ezt másképp látom. Ne a diáknak kelljen már a tananyag után rohangálni és órákat eltölteni a keresgéléssel, netről összekapirgálással (lássuk be az holtidő a feladat megoldásakor). Na de mindegy, hosszú volna és OFF is úgyhogy elnézést kérek már ezért is.

 

Köszönöm a segítséget!

 

Majd néha benéznék ide hasonló kérdésekkel ha nem gond.

Posted
óra után szépen olvasgatva otthon leülepedhetnének az emberfiában az elhangzottak

Az oktatóknak részben igaza van, persze nem ártana azért megjelölni néhányat a neten található források közül, ha már hivatkoznak rájuk. Másrészt az elmúlt 20 évben rogyásig jelentek meg programozással, programozási nyelvekkel kapcsolatos könyvek. Harmadrészt, mi van az órán való odafigyeléssel és jegyzeteléssel? Én utoljára két éve voltam programozástanfolyáson (jó trágya is volt), de ettől a 3 hónapot végigjegyzeteltük derekasan... Ez hirtelen kiment a divatból? Negyedrészt a programozás nem "beseggelhető" tantárgy. Ez egy problémamegoldó gondolkodásmód, aminek persze van komoly elmélete, de működnie kell a fejedben és működnie kell a gyakorlatban is. Tehát csak jegyzetektől soha nem fogsz megtanulni programozni. Nagyon komolyan gyúrni kell a gyakorlatokra. Tehát nehéz ügy.

dr. axel coon
Posted

Figyelek, is meg jegyzetelek természetesen másképpen nem is menne. Amit csak lehet leírok. A beseggelhetetlenséggel egyet értek. Sõt én magam nagyon is ellenzõje vagyok ennek a "módszernek"!

Egy példatár kellene amit elõbb megoldok majd ellenõrzésképpen leírja a sarkalatos lépéseket, elmagyarázza mi miért van úgy ahogy. Hasonlóképpen egy gyakorlathoz. Majd megpróbálok keresni valamit. Úgy érzem a legnagyobb gond most sem a fejben való algoritmizálással volt nálam hanem avval, hogy ezt átültessem "C"-be a nyelv parancsainak sajátossága ismeretében. Én így érzem, javítsatok ki ha tévednék.

 

ON

dr. axel coon
Posted

Hello!

 

Még annyit szeretnék kérdezni, hogy tizedestört változót milyen paranccsal deklarálhatok illetve olvastathatok be?

Posted

A floatra gondolsz?

 

float x;
...
scanf("%f",&x);

Posted

Ha megoldottad a dolgot, tedd fel a megoldást, aztán beszélgethetünk róla. Vagy akár más egyszerűbb feladatokról, ha ez segít. Bár pont C/C++-ban nem vagyok annyira otthon, de legalább én is tanulok valamit. ;)

  • 4 weeks later...
Posted

Hali nekem egy olyan egyszerű problémám lenne hogy 2 programot ami c++-ban van át kéne írnom c-be!

Ha esetleg tudna valaki egy átfordítót vagy ha nincs ilyen akkor majd beírom a programokat hát ha segít valaki. Előre is köszönöm. :)

Posted

Ha objektum orientált, akkor felejtõs (illetve nehezebb), de azért dobd be a kódot, hátha.

  • 2 weeks later...
dr. axel coon
Posted

Sziasztok!

 

Segítség kellene C-ben.

A következõ programot kellene megírjam:

 

Irj programot, az elso.dat fájl tartalmát a masodik.dat fájlba másolja azzal

a változtatással, hogy a sorok fordított sorrendben szerepelnek. (Vigyázat, a

karaktereknek az eredeti sorrendben kell maradnia!)

 

Ki mit ajánlana?

Posted

Gondolom megadták a struktúrát. Csinálsz belõle egy tömböt. Megnyitod a file-t, beolvasod a tömbbe a cuccokat. Majd megnyitod a másik file-t, a tömböt hátulról visszaforgatod bele. És ennyi.

dr. axel coon
Posted

Struktúra alatt azt érted, hogy az elérési utat ahol a tömb található? Nem adtak ilyet sajnos. Nagy kérés volna, hogy a forráskódot leírd? Nem a legszebb így tudom de már szinte mindent átgondoltam és nem jutok zöldágra vele. Az idő pedig sürget :(

Posted

typedef struct tagSOR far* SOR;

typedef struct tagSOR{
  char far*szSor,
  SOR pNext;
  SOR pPrev;
}SORPARAM;


void Sorcsere(void)
{
  // itt fogjuk tárolni a sorokat
  SOR PBASE=NULL,PEND=NULL,p=NULL; 
  char egysor[1000];
  // ez a fájlkezeléshez kell
  file *f1;
  // megnyitjuk a fájlokat
  f1=fopen("fájl1","rt");
  if(f1)
  {
    while(!feof(f1))
    {
     if(fgets(egysor,999,f1))
     {
        if(PBASE==NULL)
        {
           PBASE=(SOR)farmalloc(SIZEOF(SORPARAM));
           if(PBASE)
           {
               PBASE->szSor=(char far*)farmalloc(strlen(egysor)+1);
               if(PBASE->szSor)
               {
                  strcpy(PBASE->szSor,egysor);
                  PBASE->pNext=NULL;
                  PBASE->pPrev=NULL;
                  PEND=PBASE; 
               }
            }
         }
         else
         {
               PEND->pNext=(SOR)farmalloc(SIZEOF(SORPARAM));
               if(PEND->pNext)
               {
                 PEND->pNext->szSor=(char far*)farmalloc(strlen(egysor)+1);
                 if(PEND->pNext->szSor)
                 {
                    strcpy(PEND->pNext->szSor,egysor);
                    PEND->pNext->pNext=NULL;
                    PEND->pNext->pPrev=PEND;
                    PEND=PEND->pNext;
                 }
               }
          }
       }
     }
    fclose(f1);
  // felépítettük a kétirányba láncolt listát, most hátulról előre kiírjuk a másik fájlba
    f1=fopen("fájl1","w+t");
    if(f1)
    {
      if(PEND)
      {
        p=PEND;
        while(p)
        {
            if(p->szSor)
              fputs(p->szSor,f1);
            if(p->pPrev)
            {
              p=p->pPrev;
              // felszabadítjuk a lefoglalt memóriát, amire nincs szükség
              farfree(p->pNext->szSor);
              PEND=p;
              farfree(p->pNext);
            }
            else
            {
               farfree(p->szSor);
               farfree(p);
               PEND=NULL;
               PBASE=NULL;
               p=NULL;
            }
         }
      }
      fclose(f1);
    }
  }
}

 

Részemről jobban szeretem a listákat, mint a tömböket.

dr. axel coon
Posted

Köszi a segítséget, remélem sikerülni fog!

Posted

Szép. Ezzel csak az az egyetlen gáz, ha ezt a feladatot éppen a tömbök témakör kapcsán adták házi feladatnak. Piszok nehéz lesz megmagyarázni, hogy miért egy nagyon szép, ám jóval bonyolultabb és sokkal mélyebb programozói tudás igénylõ megoldást sikerült választani. ;)

Posted

Lehet, de szerintem ez egyszerûbb, mint a realloc (mert ugye ki tudja, mekkora lesz a beolvasandó fájl) és a string tömbök használata.

Posted

Szevasztok én tanulom még a programozást. Kellene nekem az hogy lehetséges e valahogy beolvasni és kiküldeni hexa számokat hálózati kártyán keresztül.

Szóval kaptam egy olyan feladatot hogy vezérelnem kell egy gépet 2drb hexa értékkel. Az szernit hogy milyen 2drb hexa számot küldök ki attól függ hogy mit csinál a gép.

A kérdésem hogy ilyet lehet e c++ ba??

Posted

Milyen hálózati protokoll szerint? IPX / IP vagy valami egzotikusabb? Vagy netán soros portra gondoltál?

Posted

A protokol nemszámít csak az a lényeg hogy a Lan kábelen 6os és az 5ös szálon kell hogy fusson a dolog a többi szál a kábelbe kihasználatlan.

Nemtudom érted e amit hablatyolok de mint már mondtam igencsak kezdõ vagyok. De igyexem! :D

Posted

Na, ilyen nincs.

A LAN kábel alapesetben a hálózati kártyára csatlakozik. A hálókártya viszont nem tud csak úgy adatokat pakolni a drótra, azt meg is kell formázni, bele kell foglalni a megfelelő keretek közé. Ezt elvégzi a hardver, illetve a meghajtóprogram. Általában a kiküldendő adatot kell megadni a drivernek vagy egy még ennél is magasabb szintű eljárásnak.

Szóval amit Te akarsz, az vagy nem hálózati adatforgalom, cask úgy néz ki a kábele (pl RS-485 fél duplexre bekötve), vagy valamilyen hálózati forgalom, csak Te nem értesültél a részletekről.

 

 

Posted

Mostanában nem jártam erre felé, de most lenne egy kérdésem: C-ben a programom létrehoz egy fájlt több sorral. Hogy lehetne az egyik (általam kiválasztott) sort módosítani. FSEEK-kel próbáltam a pozicionálást, de amint a rövidebb sort hosszabbra cserélem, a következõ sorba is belenyúl (konkrétan kitöröl belõle elemeket), amit nem kéne. Van erre valami megoldás? A válaszokat elõre is köszönöm!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...