Jump to content
szilard5

c++ gond

Recommended Posts

Igen, de egyszerűbb egy kezdőnek szerintem :) Annak, aki nem akar "hipermodern internetes FPS" játékot fejleszteni, annak tökéletes szerintem.

Share this post


Link to post
Share on other sites

Én nem akarok. :rolleyes:

Mivel kezdő vagyok, ezen tanulgatok valamit, és ha már lesz valami fogalmam a dolgokról, akkor nekilátok a C nek is ha lesz rá szükségem.

Share this post


Link to post
Share on other sites

Valaki aki ráér megtudná nézni, hogy mi lehet a gondja a programnak?

 

#include<iostream>

#include<iomanip>

#include<fstream>

#include<ctime>

 

using namespace std;

 

struct kockazo

{

char nev[20];

int dob[6];

};

 

int main()

{

setlocale(LC_ALL,"HUN");

kockazo kedd[2];

int ossz=0,ossz1=0;

cin.getline(kedd[1].nev,20);

for(int i=0;i<6;i++)

{

cout<<"Kerem a(z) "<<i+1<<". dobást: ";

cin>>kedd[1].dob;

 

while(kedd[1].dob<1 || kedd[1].dob>6)

{

cout<<"Hibás, csak 1-6 lehet, kérem újra! ";

cin>>kedd[1].dob;

};

 

}

ifstream be("kockazo.txt");

if(!be)

{

cerr<<"Nem találom a fájlt \n";

system("pause");

exit(1);

}

be.getline(kedd[2].nev,20);

for(int i=0;i<6;i++)

kedd[2].dob=rand()%6+1;

char a;

fflush(stdin);

cin>>a;

if(stdin)

{

system("cls");

 

cout<<kedd[1].nev<<" dobásai: \n";

for(int j=0;j<6;j++)

{

cout<<j+1<<". dobás: "<<kedd[1].dob[j]<<endl;

ossz=ossz+kedd[1].dob[j];

 

}

cout<<"összesen: "<<ossz<<endl;

 

cout<<kedd[2].nev<<" dobásai: \n";

for(int j=0;j<6;j++)

{

cout<<j+1<<". dobás: "<<kedd[2].dob[j]<<endl;

ossz1=ossz1+kedd[2].dob[j];

}

cout<<"összesen: "<<ossz1<<endl;

ofstream ki("nyert.txt");

if(ossz>ossz1)

{

cout<<"Nyert: "<<kedd[1].nev;

ki<<kedd[1].nev;

}

else

{

if(ossz<ossz1)

{

cout<<"Nyert: "<<kedd[2].nev;

ki<<kedd[2].nev;

}

else

{

cout<<"Dontetlen";

ki<<"Dontetlen";

}

}

}

 

cout<<endl;

system("pause");

return 0;

}

 

A visual studio 2005 ezt írja ki mikor futtatom:

http://kepfeltolto.hu/i/?241144&t=img

Mi lehet a gond? Vagy a Vista miatt van?

Share this post


Link to post
Share on other sites

Nem vagyok otthon a C++-ban, de szerintem a Vista miatt van ez. Van valami olyan utasítás, amit nem enged már a Vista. Pl. a real mode progik sem futnak normálisan a Vistan, szóval szerintem ez elképzelhető. Majd jön egy nálam nagyobb szaki és többet tud erről :)

Share this post


Link to post
Share on other sites

Javíts ki ha tévednék, egy egyszerű példa:char f[2];

 

ilyenkor elérhető memória címek: f[0] = 'j'; f[1] = 'ó';

 

szal ha ilyenkor f[2] re hivatkozol és az pont egy protected(most csak mondtam egy példát) memória cím, akkor jönnek az acces vilation-ok.

 

szal kedd[0] és kedd[1]

 

Nézd meg hátha :)

Share this post


Link to post
Share on other sites

Köszi, de már nincs fönt a Visual Studio(win reinstall volt) de a tanáromnak mutattam és szerinte hiányzik valahonnan egy fflush és az kavar be.

Ja meg írtunk ma egy ZH-t. 52 pontból 41 lett és ezt hozzáadva a félév közben szerzett pontokhoz meglett év végén a 3-as.

Share this post


Link to post
Share on other sites

Attól nem acces violationt kellene hogy kapj.

Akkor csak rossz eredményt kapnál mert a változód a következő ciklusban ugyanazt az értéket kapná meg ami az előző bekérésnél/olvasáskor volt. Címzéshibára tudok gondolni, csak az a fura hogy dev c++ ban tökéletesen fut :) .

Share this post


Link to post
Share on other sites

sziasztok! én is egy nagy kéréssel fordulok hozzátok. nagyon kezdő vagyok c-ben és kaptam egy házit jegyre és elég bonyolultnak tűnik nekem,remélem tudtok segíteni.fontos lenne mert ezen múlik az évvégi jegyem.ja,és szerdára kéne beadnom.

tehát a feladat: egy tesztet írt 3 tanuló.a teszt 15kérdésből állt,minden kérdésre 4 válasz volt,de csak 1 volt a helyes.a helyes megoldást egy meglévő dokumentum tartalmazza szóközökkel elválasztva(megoldas.txt:).a tanuló válaszait egy másik txt tartalmazza a minta alapján

Pokol Sára

1 3 2 1 4 3 2 1 2 3 3 2 1 3 4

Szegfű Olivér

3 2 3 4 1 2 2 3 1 2 4 1 2 2 4

Balogi Jolán

2 4 3 3 3 2 1 4 2 4 2 4 3 2 2

1.kiíratni a megoldást tartalmazó állományt

2.kérjük be a tanuló nevét és írassuk ki a válaszait

3.írassuk ki h volt e 15 helyes válaszos tanuló

4.volt e min 13 helyes válaszos

5.bekérni a feladat sorszámát és kiíratni h kik válaszolt rá helyesen

6. kiírni a nevet és a helyes válaszok számát

7.kiíratni a legrosszabb válaszadó nevét

8készíteni egy statisztika.txt-t amiben van:

-kérdésenként hány helyes válasz

-átlagosan hány helyes válasz

-hány fő teljesített 60% felett

előre is köszönök minden segítséget

Share this post


Link to post
Share on other sites

Be kell olvasni a megoldásokat egy tömbbe, a tanulók válaszait és össze kell hasonlítgatni. Ne idegeskedj.

 

A kiíratást gondolom meg tudod csinálni. Változókban tárolod a legjobb és legrosszabb válaszadót. Egyedül a 8-as a nehezebb szerintem, de az sem lehetetlen.

Mivel nem ismerem a C-t, ezért csak így tudtam elmagyarázni.

Bontsd le a feladatot, először csak az elsővel foglalkozz, amíg nem működik az hibátlanul. Utána jöhet a következő ;)

Share this post


Link to post
Share on other sites

Nem sok kedvem van nekiülni. :D Mi az ami nem megy? :)

Jah amúgy a

a tanuló válaszait egy másik txt tartalmazza a minta alapján

bekérjük a tanuló nevét és az lesz a txt neve is?

 

szerk:jó korán keltél barátom XD

Share this post


Link to post
Share on other sites

nem, a txt neve "teszt" a tartalma meg maga a minta.amúgy már a másodiknál megakadtam:S

Share this post


Link to post
Share on other sites

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

class tanulo{
   public:
     int oszt[15];
     char *nev;
   
     void nev_ert(char *s, int jegy[15]){
        int i; 
        nev = (char*) malloc (sizeof(char) * strlen(s));
        strcpy(nev,s);
        for (i = 0; i < 15; i++) oszt[i] = jegy[i];
     }                   
};

void kiirat(tanulo x){
     int i;
     printf("%s\n",x.nev);
     for (i = 0; i < 15; i++) {
         printf("%d",x.oszt[i]);
         (i == 14) ? printf("\n") : printf(" ");
     }
}

int* valaszok_be(FILE *f){
   int i;
   int *v = (int*) malloc (sizeof(int) * 15); 
   
   fscanf(f,"%d",&v[0]);
   for(i = 1; i < 15; i++) fscanf(f," %d",&v[i]);  
   
   return v;
}

void volte(int limit, tanulo x, int *jok){
    int counter = 0;
    int j;
    
    for (j = 0; j < 15; j++) if (jok[j] == x.oszt[j]) counter++;
    if (counter >= limit) printf("%s: %d helyes választ adott\n",x.nev,counter);

    return;
}

void helyesen(int sz, int *jok, tanulo *tanulok){
    int i,k = 0;
    for (i = 0; i < 3; i++){
        if (tanulok[i].oszt[sz] == jok[sz]) { k++; printf("Helyes válasz: %s\n",tanulok[i].nev);}
    } 
    if (k == 0) printf("Nem volt helyes válaszadó!\n");
}

int helyesV(tanulo x, int *jok){
    int i,counter = 0;
    for (i = 0; i < 15; i++){
        if (x.oszt[i] == jok[i]) counter++;
    }
    return counter;
}

int main(){
    int i,d; 
    int *jovalaszok, *valaszok;
    char nev[256];
    char k;
    
    tanulo tanulok[3];
    
    FILE *f = fopen("teszt.txt","r");
    
    for (i = 0; i < 3; i++){
        d = 0;
         do{
              k = fgetc(f);
              if (k != '\n')nev[d++] = k;
              nev[d] = '\0'; 
        }while ((k != '\n') && (k != '\0'));
        valaszok = valaszok_be(f);
        tanulok[i].nev_ert(nev,valaszok);
        fgetc(f);//megálltunk a sor végén ezért átugorjuk még az utsó karaktert
    }
    fclose(f);
    
    f = fopen("megoldas.txt","r");
    jovalaszok = valaszok_be(f);
    fclose(f);
    
    for (i= 0; i< 15; i++) {
        printf("%d",jovalaszok[i]);
        (i == 14) ? printf("\n") : printf(" ");
    }
    
    for (i = 0; i < 3; i++) kiirat(tanulok[i]);
    
    for (i = 0; i < 3; i++) volte(15,tanulok[i],jovalaszok);
    for (i = 0; i < 3; i++) volte(13,tanulok[i],jovalaszok);
    
    fflush(stdin);
    printf("Feladat sorszána: ");
    scanf("%d",&d);
    
    helyesen((d-1),jovalaszok,tanulok);
    
    for (i = 0; i < 3; i++) {
         printf("%s: %d\n",tanulok[i].nev,helyesV(tanulok[i],jovalaszok));
    }
    
    system("pause");
    
    free(jovalaszok);
    free(valaszok);
        
    return 0;
}

 

Unatkoztam, ez alapján már a statot meg tudod csinálni sztem.

 

Kipróbáltam de tüzetesen nem teszteltem le.(értsd lehetnek benne hibák)

A puding próbája hogy megeszik :lol: na majd írsz most dolgom van.

 

Tejcsokoládés csőtészta.

Share this post


Link to post
Share on other sites

nagyonszépenköszönöm, hálám a sírodig üldözni fog,de ezt ne vedd fenyegetésnek:)

Majd este meglesem és próbálkozok vele egy jósokáig,csak most rohannom kell melózni. köszi mégegyszer

 

Share this post


Link to post
Share on other sites

Kedves SixHouse!Nagyon rendes vagy,csak az a gond h túlságosan tudsz:D igazából sok olyan dolog van abban amit írtál amit még nem is vettünk.amúgy már a probléma megoldva,mert volt egy rendes oszt.társam aki segített,és minden happy:) ha valakit érdekel,a kódot berakhatom,bár kétlem h bárkit is érdekel:D

Share this post


Link to post
Share on other sites

ou :( hát jó pedig tök nagy örömmel írtam :lol: na akkor jó ha minden ok :) jó lenne nagyon tudni, de azért köszi :) de megnézném a kódot amivel megoldottátok, ha szabad (csak puszta kíváncsiság).

csoki

Share this post


Link to post
Share on other sites

Na,akkor berakom egy kis kommenttel:) a hetedik feladatig kész

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <conio.h>
#define M 20
/*------------------------------------------------------------------------------
Létre hozunk egy recordot ... ez elsõként a felhasználó nevét fogja tárolni,
mellé a hozzá tartozó teszt megoldásokat, valamint a legutolsó elem a jó
megoldások számát tárolja el. A recorddal egy tömböt hozunk létre. Ez arra, hogy
különbözõ típusú (string, integer) változókat tudjunk egy tömbben tárolni. A
létrehozott tömbönk a fent definiált M (20) elemû lesz.
------------------------------------------------------------------------------*/
struct teszt{
    char nev[30];
    int a[16];
} t[M];

int megoldas[15]; // eltárolom a megoldásokat

void elsofeladat();
void masodikfeladat();
void harmadikfeladat();
void negyedikfeladat();
void otodikfeladat();
void hatodikfeladat();
void hetedikfeladat();

void main()
{
randomize();
elsofeladat();
masodikfeladat();
harmadikfeladat();
negyedikfeladat();
otodikfeladat();
hatodikfeladat();
hetedikfeladat();
getch();
}

/*------------------------------------------------------------------------------
Lusták vagyunk, ezért soron kívül legeneráljuk a megoldas.txt és az adat.txt
fájlokat. Mivel ezt csak egyszer kell használni a továbbiakban kikommentelem :)
------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------
void general()
{
int i , j;
FILE *f , *m;
m=fopen("megoldas.txt","w+");
    for (i = 0; i <= 14; i++) {
        fprintf(f,"%d ", random(4)+1);
    }
fclose(m);
f=fopen("adat.txt","w+");
    for (j = 0; j <= M-1; j++) {
        for (i = 0; i <= 14; i++) {
            fprintf(f,"%d ", random(4)+1);
        }
        fprintf(f,"\n");
    }
}

------------------------------------------------------------------------------*/

/*------------------------------------------------------------------------------
1. Kiiratni a képernyõre a tanulók válaszait.
------------------------------------------------------------------------------*/

void elsofeladat() {
    int i , j , jo = 0;
    char anev[30];
    FILE *f , *m;
    m=fopen("megoldas.txt", "rt");
        for (i = 0; i <= 14; i++) {
            fscanf(m,"%d", &megoldas[i]); // a megoldásokat beolvassuk a megoldas tömbbe.
        }
    fclose(m);
    f=fopen("adat.txt", "rt");
        for (i = 0; i <= M-1; i++) {
            fscanf(f, "%s", &anev);         // az anev változóba beolvasom a fájl elsõ stringjét
            strcpy(t[i].nev, anev);     // lemásolom ezt a stringet a rekordom elsõ elemébe
            strcat(t[i].nev, " ");        // a lemásolt adathoz hozzáfûzök egy szóközt
            fscanf(f, "%s", &anev);         // az anev változóba beolvasom a fájl második stringjét
            strcat(t[i].nev, anev);     // hozzáfûzöm ezt a stringet a rekordom elsõ eleméhez
            for (j = 0; j <= 14; j++) { // egy másik ciklussal beolvasom a 15 teszt eredményét az a tömbbe.
                fscanf(f,"%d", &t[i].a[j]);            // beirom a beolvasott értéket az a tömbbe
                if (t[i].a[j] == megoldas[j]) {     // he ez a beolvasott érték megeegyezik a megoldás azonos feladatának értékével
                    jo++;                           // növelem a jo -t 1-gyel
                }
            }
            t[i].a[15]=jo;                // beirom az a tombbe a jo-t.
            jo = 0;                    // jo-t lenullázom, hogy legközelebb is lehessen vele számolni
        }
    fclose(f);
    // most ki fogom irni a fejlecet!
    textcolor(8);
    cprintf("Tanulo neve");
    printf("\t");
    for (j = 1; j <= 15; j++) { // ciklus segítségével a  feladat sorszámáz
        cprintf("%3d",j);
    }
    cprintf(" Jok");            // és végül, hogy jok, mert ott vannak a jó megoldások elmentve
    printf("\n");
    // fejlec vege, most jonnek az adatok
    for (i = 0; i <= M-1; i++) {
        printf("%s\t", t[i].nev);       // kiírom a nevet.
        for (j = 0; j <= 15; j++) {
            printf("%3d", t[i].a[j]);     //ciklus segítségével kiírom an évhez tartozó eredményeket
        }
        printf("\n");                    // sort emelek, a többi tanulonak
    }
}

/*------------------------------------------------------------------------------
2. Bekérni egy tanuló nevét és kiíratni csak az õ válaszait.
------------------------------------------------------------------------------*/

void masodikfeladat() {
    int i = 0 , j , db = 0;
    char anev[30];
    char neve[30];
    printf("\ntanulo neve: ");
    gets(anev);                             // bekérem a tanuló nevét "aneve" változóba
    strcpy(neve,anev);                      // átmásolom a szóköz miatt...
    for (i = 0; i <= M-1; i++) {
        if (strcmp(t[i].nev,neve)==0) {     // összehasonlítom a bekértet a tárolt nevekkel .. ha egyezik:
            printf("%s\t", t[i].nev);       // kiírom a nevet.
            for (j = 0; j <= 14; j++) {
                printf("%3d", t[i].a[j]);     //ciklus segítségével kiírom an évhez tartozó eredményeket
            }
            printf("\n");                    // sort emelek, mert több tanulonak lehet ugyanaz a neve
            db++;                           // novelem a db-t.
        }
    }
    if (db==0) {                            // ha db=0, akkor nem volt a névnek megfelelõ tanuló
        printf("Nincs ilyen nevu tanulo az iskolaban!");
    }
    printf("\n");
}

/*------------------------------------------------------------------------------
3. Kiírni h volt-e olyan tanuló, akinek mind a 15 válasza helyes.
------------------------------------------------------------------------------*/

void harmadikfeladat() {
    int i = 0;
    while (t[i].a[15]!=15 && i<=M-1) {              // az eltarolt "jok" nem egyenlo 15-tel, akkor ciklusban marad, tehát növeli az i-t a megadott korláti
        i++;
    }
    if (i<M) {    // ha volt 15 jo, akkor i kisebb lesz M-nél, ezért kilép .. tehát csak ki kell írnunk:
        printf("volt olyan tanulo, aki mindenre helyesen valaszolt.\n");
    }
    else {
        printf("nem volt mindenre helyesen valaszolo tanulo.\n");
    }
}

/*------------------------------------------------------------------------------
4. Kiíratni h volt-e olyan, akinek min 13 helyes válasza volt

szerintem félre írtad a feladatot ... szerintem az a feladat, hogy:
hányan válaszoltak legalább 13-ra helyesen :) szóval azt fogom megcsinálni ...
ha tévednék, akkor csak az elõzõben egy feltételt kell átírni:)
------------------------------------------------------------------------------*/

void negyedikfeladat() {
    int i = 0 , db = 0;
    for (i = 0; i <= M-1; i++) {        // ciklussal végig megyek az eltárolt adatokon
        if (t[i].a[16]>=13) {             // ha a "jok" 13, vagy annal több, akkor
            db++;                       // db-t novelem.
        }
    }
    if (db==0) {                        // ha db = 0 akkor nem volt
        printf("nem volt semennyi tanulo.\n");
    }
    else {                             // egyébként meg kiiratom db-t.
        printf("%d tanulo irt 13, vagy annal tobb pontot ero teszetet.\n", db);
    }
}

/*------------------------------------------------------------------------------
5. Bekérni a feladat sorszámát és kiíratni h kik válaszoltak rá helyesen.
------------------------------------------------------------------------------*/

void otodikfeladat() {
    int i , j , ssz;
    printf("\nfeladat sorszama: ");
    scanf("%d",&ssz);                   // bekerem a feladat sorszamat
    if (ssz<1 || ssz>15) {
        printf("hibas szam\n");
    }
    else {
        for (i = 0; i <= M-1; i++) {
            if (megoldas[ssz-1]==t[i].a[ssz-1]) {      //ciklusban osszehasonlitom a megoldasban tarolt és a tanulok altal adott valaszt
                printf("%s\n", t[i].nev);          // ha jó, kiírom a nevüket
            }
        }
    }
}

/*------------------------------------------------------------------------------
6. Készíteni egy másik állományt amibe belekerülnek a tanulók neve és helyes válaszaik száma.
------------------------------------------------------------------------------*/

void hatodikfeladat() {
    int i;
    FILE *f;
    f=fopen("helyesvalasz.txt","w+");
        for (i = 0; i <= M-1; i++) {
            fprintf(f,"%s: %d helyes valasz\n", t[i].nev , t[i].a[15] );
        }
    fclose(f);
}

/*------------------------------------------------------------------------------
7. Kiíratni a legrosszabb válaszadó(k nevét)
------------------------------------------------------------------------------*/

void hetedikfeladat() {
    int i , min ;
    min = t[0].a[15];
    for (i = 0; i <= M-1; i++) {
        if (min>t[i].a[15]) {
            min = t[i].a[15];
        }
    }
    printf("\nlegrosszabb valaszadok: \n");
    for (i = 0; i <= M-1; i++) {
        if (t[i].a[15] == min) {
            printf("%s\n", t[i].nev);
        }
    }
}

Share this post


Link to post
Share on other sites

Huhú! :D nem sajnáljátok a billentyű leütéseket :D , először én is struktúrát akartam használni, de mégsem tettem :) .

Sok sikert. csoki

Share this post


Link to post
Share on other sites

Skacok! megint lenne egy kis problémám:Sholnapra kéne ijen indexvektoros rendezés csinálni minimummal de vhol elrontottam.Megtudná vki lesni h hol a hiba?remélem nem túl későn szóltam és előre is köszi!

tehát a kód:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{int i,j,min,a[10],b[10];
clrscr();
randomize();
for (i = 0; i <= 9; i++) a[i]= random(100)+1;
for (i = 0; i <= 9; i++) b[i]= i;
for (i = 0; i <= 9; i++) printf("%d ",a[i]);
while (i<=9){
for (i = 0; i <= 9; i++) {
if (a[i]<min) {
min=a[i];}}
for (j = 0; j <= 9; j++) {
b[j]=min;
j=j++;}}
printf("\n");
for (i = 0; i <= 9; i++) printf("%d ",a[b[i]]);
getch();}

Share this post


Link to post
Share on other sites

Nem tesztelem le de a while elé nem ártana egy i = 0; mert az előtte levő for ciklus 10 ig megy. ráadásul a while is az i változót használja mega for is...

a j = j++ meg külön poén: j++ ennyi

Share this post


Link to post
Share on other sites

Hali

 

Ezt miért írhatja ki, amikor mindent úgy csináltam mint legutóbb, csak akkor lefordította, most pedig nem?

 

hiba.png

 

 

 

Share this post


Link to post
Share on other sites

1: nem tudja megnyitni az iostream.h fájlt

2,3,4: ezek az első problémából adódnak, ugyanis az a fájl tartalmazza ezeket a függvényeket :)

5: a getchar pedgi azt hiszem az stdio.h-ban található

 

(6: nem használod a deklarált változót semmire)

Share this post


Link to post
Share on other sites

Ezekre szerény angol tudásommal is rájöttem. Csak azt nem értem miért.

Share this post


Link to post
Share on other sites

Gondolom nincs jól beállítva a fordítóban az include könyvtár. Próbáld beállítani... több ötletem nincs

Share this post


Link to post
Share on other sites
Hali

 

Ezt miért írhatja ki, amikor mindent úgy csináltam mint legutóbb, csak akkor lefordította, most pedig nem?

 

hiba.png

 

próbáld meg csak szimplán az iostream-et inkludolni, tehát:

 

#include 

 

Az std névtért importáltad?

Share this post


Link to post
Share on other sites

Az std névtért importáltad?

 

Ezt nem is értem, de nem. :S (akkor ez a baj?)

Share this post


Link to post
Share on other sites

van ilyen sor a programban:

using namespace std

 

enélkül nem használhatod csak minősítve a cin/cout neveket.

Az include direktívában használt header nevekben pedig azért nem célszerű a .h-s nevet használni, mert ezek elavult, nem szabványos header állományok. C-s header-eket ugyan használhatsz C++-ban, de ezek csak a kompatibilitás miatt vannak benne a nyelvben, így a használatuk nem a legszebb kódot eredményezi. De ha már használod, akkor érdemes a C++-os verzióját használni, pl. stdio.h helyett, cstdio, stb.

Share this post


Link to post
Share on other sites
nem célszerű a .h-s nevet használni, mert ezek elavult, nem szabványos

 

Melyik szabványra gondolsz? :)

 

Az ansi c -ben ez a szabványos és ez "központi" szabvány.

(és "általában" ezzel a c++ szabványok kompatibilisek)

 

c++ ban igaz végülis :)

 

Itt egy kis segédlet amiből megnézheted seekoly javaslatát:

 

http://e-oktat.pmmf.hu/webgui/www/uploads/images/1453/010-c-c-2.pdf

Share this post


Link to post
Share on other sites

Az ISO szabványra. Mikor a 80-as végén megalkották a C++-t, akkor a standard könyvtárak nevei .h-ra végződtek. A nyelv szabványosítása során azonban úgy döntöttek, hogy a könyvtárakban elhelyezett függvényeket az std névtérbe rakják, ami jó ötletnek volt, de a régi forráskódokat ezzel a lépéssel (szabványos C++ fordítóval) lehetletlen lett lefordítani.

Ezért a régi könyvtárak, pl. a iostream.h ugyan felhasználhatók, de a szabvány szerint nem támogatottak => elavultak és a tartalmuk nincs benne az std névtérben. Ezért célszerű az új könyvtárakat használni, melyek szinte megegyeznek a régiekkel, de a tartalmuk az std névtérben található.

 

Így a szabvány szerint a nyelv két részből áll, a nyelv magjából és egy standard könyvtárból. Mondjuk ehhez később újabb részek kapcsolódtak, pl. az STL, és a C standard könyvtáraknak egy módosított változata. Így használhatók a régi C könyvtárak pl. stdio.h, de ezek globálisak a programra nézve. Vagy használhatók az standard könyvtárban találhatók pl. cstdio.

 

OK, hogy C++-ban lehet C programot írni, de az attól nem lesz C++. Mint ahogy C-ben is lehet C-szerű programot írni, de az attól nem lesz C pl. while( tomb[ i ] != 0 )

 

Amúgy C++-hot ajánlom az alábbi könyvet:

http://www.research.att.com/~bs/3rd.html

 

Esetleg pdf-ben megtalálható a guglin:

http://www.google.hu/search?hl=hu&q=The+C%2B%2B+Programming+Language+filetype%3Apdf&meta=

 

 

És ha mindenáron parancssorban akarsz fordítani, akkor használd inkább a GCC-t:

http://gcc.gnu.org/

Share this post


Link to post
Share on other sites

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

Bejelentkezés

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×