Jump to content
GSForum - Segélyvonal

Programozás C/C++-ban


Recommended Posts

Posted

Egy tömbben benne vannak a hosszak, már feltöltésnél kiszámoltatom a őket. Utána ezt használom fel (ugyanúgy ellenőrzi, nem-e szerepelne kétszer), csak megvan ez az első elemes gond. Azért nem gondolom hibának, mert a max/min indexérték csak akkor változik, ha nagyobbat/kisebbet talál, így mindenképp az első leghosszabb/legrövidebb kerül át a kiírandó tömbbe.

Posted

Lenne egy hülye kérdésem, amire nem találok választ. Mi a különbség az alábbiak között: exit(0), exit(1), exit(2)? Leginkább az 1 és a 2 között, a 0 elvileg a normál futás. exit(2)-vel eddig csak kivételkezeléskor találkoztam, nem értem, ott miért az kell, miért nem jó az 1.

Posted

Az ERROR_LEVEL környzeti változó kapja meg ezt az értéket. Pl batchfájlokban jól jöhet, ha azt kell eldönteni, mi volt a kilépés oka.

  • 1 month later...
peter_in_the_matrix
Posted

Sziasztok!

Nemrég elkezdtem olvasni egy C-rõl szóló leírást, mert érdekel a programozás és gondoltam a C hasznos lenne mert sok helyen használják és sok másik nyelvnek az alapja. Az a problémám, hogy megírtam a szokásos Hello Világ programot az oldal segítségével, de nem tudom lefordítani, mert nincs fordítóm. Több fordítót is letöltöttem, de egyiket se sikerült mûködésre bírnom, eddig az Ubuntu konzolja volt a leghatékonyabb (gcc hello.c), de az is megakadt, mert nem tudta betölteni az stdio.h-t (ez mondjuk érthetõ, mert olyanom nincs, de ha letöltök egy fordítót amibe van akkor azt megint csak nem tudom használni.

Tudna valaki segíteni, milyen programot töltsek le, hogy kell telepíteni, nagyon új vagyok még ebben.

 

Elõre is köszönöm

Posted

Én Visual Studio-t használok, de ingyenes megoldásként tudom javasolni a Code::Blocks-ot, ez is tökéletesen használható, próbáltam már.

peter_in_the_matrix
Posted

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

Ez mûködik :-) Kiírja, hogy Hello World :-) és exe-t is csinál :-)

Köszönöm szépen

  • 4 weeks later...
[OP]Destroy-man
Posted

Úgy döntöttem, hogy neki veselkedek a C++ nyelvenek. Eddig csak C, C#, és Javaval foglalkoztam.

Beszereztem a "Tanuljuk meg a C++ progarmozási nyelvet 24 óra alatt" c. könyvet hozzá, de mindjárt az elején elakadok, a Hello World-nél. :P

A probléma a következő: a fejlesztő program (Visual Studio 2010), nem ismeri a cout parancsot. Ez mi okozhatja? Az igaz, hogy a VS2010 még béta, de az nem azt jelenti, hogy a régota készen lévő Header fájl is hiányos. :lol:

 

Az általam használt kód:

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
    std:cout << "helloworld";
    return 0;
}

 

A könyvben az iostream-et importálták, de az sem oldotta meg a gondot, úgyhogy azt végül kiszedtem a kódból, meg egyébként is az stdafx-nek a kiírást tartalmazni kell(ene). Vagy megváltozott a kiiratás?

 

Más:

Ha sikerül működésre bírni a "kicsikét", hogy fogom tudni 64-bitre lefordítani? Mit kell átállítanom a VS-ben? A 64 bites fordító telepítve van. :)

Posted

Lehet csak elírás, de "_tmain" -ről még nem hallottam.

 

#include <iostream>
using namespace std;

int main(){

    cout << "helloworld";
    return 0;
}

 

Ha nem akarod kiírni a "using namespace std"-t, akkor pedig valószínűleg ott lesz a hiba, hogy std::"stbstb" a helyes alak. Tehát két kettőspont kell. De hasznosabb kiírni még az elején a namespace-t, és akkor nem kell ezzel az std:: alakkal foglalkozni utána, hacsaknem más namespace-ed is van, és másra van szükséged, de erről majd később fogsz olvasni a könyvben biztosan.

 

A 64 bites fordításhoz nem tudok hozzászólni.

[OP]Destroy-man
Posted

Én csak az std-s sort gépeltem be, a többi adott volt.

_tmain() main()-re cserélve semmi változás, viszont az std namespace-t nem találja. :pislog:

 

A jelenlegi kód:

#include "stdafx.h"
using namespace std;

int main(int argc, _TCHAR* argv[])
{
    cout << "helloworld";
    return 0;
}

 

A hozzávaló hibák:

IntelliSense: name must be a namespace name
IntelliSense: identifier "cout" is undefined

 

Ötlet? :hááát:

 

Valamit még include-olni kéne?

Nem lehet, hogy .NET 4.0 kavar be?

Posted

Ha nem írod be a "using namespace std"-t, akkor az std::cout-ot kell használni 2 db kettõsponttal.

A cout az isotream-ben van benne, így ezt mindenképp include-olni kell.

 

Dave89 megoldása a jó, ha lehet ilyet mondani. :)

Posted

Egy lehetséges mûködõ megoldás amit írtam.

 

Egyébként mi ez a "stdafx.h" ? Sosem hallottam még ilyenrõl C és C++ -ban. Honnan jött ez? Alapból nincs benne a VS-ban, mert nekem hiányolja a 2003-as.

Posted

Az MFC forráskódjában találtam ilyet. Lehet, hogy MFC-s varázslóval készült az alap alkalmazás?

Posted
Miért használsz beta eszközöket egyáltalán? .NET 4? VS2010? Még a véglegesekkel is szokott lenni gond.
[OP]Destroy-man
Posted

Na, akkor azt hiszem letörlöm, és jön helyette a VS 2008. :) Pedig egész megszerettem ezt a verziót az IntelliSense miatt.

 

Az stdafx.h ezt tartalmazza:

// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>



// TODO: reference additional headers your program requires here

 

Egy Win32 Consol Applicationt kértem a VS-tõl, és akkor alapból ezt adja:

// 1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

Posted

Öreg hiba, mindig Empty Project-tel kezdünk. :D

Posted

Így van, CLR empty project-et kell indítani.

[OP]Destroy-man
Posted

Így meg megy. :) Akkor mégis kap egy esélyt tõlem ez a VS2010. :)

Köszi a segítséget! :D

[OP]Destroy-man
Posted

Gyorsított eljárásban átnéztem ezt a 24 órás C++ könyvet (C, C# és Java ismeretek mellett nem volt értelme sokat foglalkozni vele).

Így úgy döntöttem, egy kicsit tovább lépek, és belenézek a DX-be. Eddig érthető volt számomra amit a tutorialba írtak (monster3D project), de egy valamit nem találok a VS-ben. Hol lehet linkelni az Obejectet és Libraryt? Ha valaki VS 2008-at használ, és tudja merre keressem ezt a linkelést, akkor azt nagyon szépen megköszöném. :)

 

Szerk.: Megtaláltam, de itt valami más hiba lesz.

Error 4 error LNK2028: unresolved token (0A00002A) "extern "C" unsigned short __stdcall RegisterClassExA(struct tagWNDCLASSEXA const *)" (?RegisterClassExA@@$$J14YGGPBUtagWNDCLASSEXA@@@Z) referenced in function "extern "C" int __stdcall WinMain(struct HINSTANCE__ *,struct HINSTANCE__ *,char *,int)" (?WinMain@@$$J216YGHPAUHINSTANCE__@@0PADH@Z) d3d.obj direct3d
Posted

Üdvözlet! Arról szeretnék kérdezni, hogy miként lehet a C++-os programokban magyar ékezetes betûket megjeleníteni? Valamint keresnék valakit aki tudna segíteni a fájlkezelésben is, mert nem nagyon értem, ahogy könyvben van. Elkélne egy kis magyarázat, ugyanis teljesen magamtól tanulok.

A válaszokat elõre is kösz.

Posted

Magyar karakterek

2 módot tudok, meglátod, melyik a megfelelő.

  1. int main()
    {
        setlocale(LC_ALL,"HUN");
    
        //programod
    
        return 0;
    }

    Ekkor a programüzenetek ékezetesen íródnak ki, de ha adatot vittél be, amely ékezetes karaktereket tartalmazok, azok hibásan jelennek meg.

     

  2. #include<windows.h>

    Ebben az esetben a setlocale(LC_ALL,"HUN"); nem használható, így a programüzenetek nem lehetnek ékezetesek (hibásak lennének), viszont a bevitt adatok helyesen fognak megjelenni.

Fájlkezelés

Erről nem tudok sokat, de talán segít ez a kicsi is.

 

#include<fstream>

 

Olvasásra

ifstream iras("file.txt"); //in filestream, az olvasas lesz az adott fájlra történő hivítkozás utasítása, zárójelben maga az olvasásra megnyitandó fájl, VS esetében a cpp állományokkal van 1 mappában (ha nincs létrehozva, akkor létrehozza)
if(!olvasas) {cerr<<"Hiba"; exit(1);}

//ezek után az olvasas-t úgy kell használni, mint a cin-t

olvasas.getline(valtozo,20);


//miután végeztél, le kell zárni a megnyitást

olvasas.close();

 

Írásra:

ofstream iras("file.txt"); //out filestream, az iras lesz az adott fájlra történő hivatkozás utasítása, zárójelben maga az írásra megnyitandó fájl, VS esetében a cpp állományokkal van 1 mappában (ha nincs létrehozva, akkor létrehozza)
if(!iras) {cerr<<"Hiba"; exit(1);}

//ezek után az iras-t úgy kell használni, mint a cout-t

iras<<valtozo;

//miután végeztél, le kell zárni a megnyitást

iras.close();

Posted

Köszönöm a segítséget! Egyelőre nem működik, de leírom a kódot, hátha így könnyebben tudtok segíteni. Azt írja a fordító, hogy az ofstream nincs deklarálva.

#include <iostream>
#include <windows.h>
#include<fstream>

int main()
{
     ofstream olvasas("eloadas.txt");
     if(!olvasas) {cerr<<"Hiba"; exit(1);}
     
     olvasas.getline >> valtozo;
     olvasas close();
     system("pause");
     return 0;
}

Posted

Én hibám, felcseréltem az írás/olvasás címkéket. Ha kijavítod iftsream-re menni fog.

 

Jó lenne még létrehozni a valtozot-t is (megfelelő hosszúságút).

Posted

Jó most már egy része mûködik. Namespace-t is kihagytam azért nem ismerte fel.

#include <iostream>
#include <windows.h>
#include <fstream>
using namespace std;
int main()
{
     char valtozo;
     ifstream olvasas("eloadas.txt");
     if(!olvasas) {cerr<<"Hiba"; exit(1);}
     
     olvasas.getline >> valtozo; // most viszont itt akad el
     olvasas close();
     system("pause");
     return 0;
}

Mi lehet a probléma?

Posted

Így?

#include <iostream>
#include <windows.h>
#include <fstream>
using namespace std;
int main()
{
     char valtozo[20];

     ifstream olvasas("eloadas.txt");
     if(!olvasas) {cerr<<"Hiba"; exit(1);}
    
     olvasas.getline(valtozo,20);

     olvasas.close();

     system("pause");
     return 0;
}

 

Fent sikerült a getline dolgot is elírnom, gondolom, nem ez volt az eredeti elképzelésem, út közben módosult, javítva. A kódodból hiányzik egy . az olvasas.close();-ból.

 

Rám fér egy nagy ismétlés.

Posted

Működik. Esetleg le tudnád írni, hogy tudnám a fájl tartalmát megjeleníteni, ha nem nagy teher? :)

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...