Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Hozzászólások

(#601) sagit válasza martonx (#600) üzenetére


sagit
addikt

nincs más megoldás?
mert akkor már ujratelepitem a gépet

Philips 65OLED803 || iPhone 15 Pro Max || Macbook Air M1 ||

(#602) doc válasza sagit (#599) üzenetére


doc
nagyúr

nem parancssor, Dosbox

(#603) sagit válasza doc (#602) üzenetére


sagit
addikt

ahham... lentvan.....

de nem nagyon akar működni nekem :B írja hogy a vinyót be kell mountolni? vagy mi? ...

Philips 65OLED803 || iPhone 15 Pro Max || Macbook Air M1 ||

(#604) martonx válasza sagit (#603) üzenetére


martonx
veterán

Az ilyen irányú kérdéseidre itt már nem fogsz választ kapni.

Én kérek elnézést!

(#605) sagit válasza martonx (#604) üzenetére


sagit
addikt

nah csak láma voltam, olvastam 1 README.t és müxik is :)

Köszönöm a segítséget, tökéletesen müxik már a c++ 64 biten is :)

:R :R :R

Philips 65OLED803 || iPhone 15 Pro Max || Macbook Air M1 ||

(#606) doc válasza sagit (#605) üzenetére


doc
nagyúr

azert az tulzas hogy 64 biten, jo az 16-nak is :D

(#607) sagit válasza doc (#606) üzenetére


sagit
addikt

ok :) akkor a Dosbox fut a 64 bites vista alatt.... a C++ meg az alatt :)

Philips 65OLED803 || iPhone 15 Pro Max || Macbook Air M1 ||

(#608) !wannabe


!wannabe
tag

Mit jelent az ha egy függvény tipusfüggetlen?

(#609) !wannabe válasza !wannabe (#608) üzenetére


!wannabe
tag

template <class myType>
myType GetMax (myType a, myType b) {
return (a>b?a:b);
}

Ez a kod tipusfuggetlen mivel tud barmilyen tipusu szamot osszehasonlitani.

(#610) gygabor88 válasza !wannabe (#609) üzenetére


gygabor88
tag

Pontosabban minden olyan típussal meghívható, amelyhez van > operátor.

[ Szerkesztve ]

(#611) Tussky


Tussky
tag

Sziasztok!

Egy olyan problémám lenne,hogy szeretnék Cmake-el fordítani,de állandóan ezt a hibaüzenetet kapom:

Change Dir: C:/ParadisEO-1.2/CMakeFiles/CMakeTmp

Run Build Command:D:\PROGRA~1\MICROS~1.0\Common7\IDE\devenv.com
CMAKE_TRY_COMPILE.sln /build Debug /project cmTryCompileExec

Microsoft (R) Visual Studio Version 9.0.21022.8.
Copyright (C) Microsoft Corp. All rights reserved.

1>------ Build started: Project: cmTryCompileExec, Configuration: Debug
Win32 ------

1>Compiling...

1>Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for
80x86

1>Copyright (C) Microsoft Corporation. All rights reserved.

1>cl /Od /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "CMAKE_INTDIR=\"Debug\""
/D "_MBCS" /FD /RTC1 /MDd /Fo"cmTryCompileExec.dir\Debug\\"
/Fd"C:/ParadisEO-1.2/CMakeFiles/CMakeTmp/Debug/cmTryCompileExec.pdb" /W3 /c
/Zi /TC /Zm1000

1> ".\testCCompiler.c"

1>testCCompiler.c

1>Compiling manifest to resources...

1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0

1>Copyright (C) Microsoft Corporation. All rights reserved.

1>Linking...

1>Embedding manifest...

1>Project : error PRJ0003 : Error spawning 'cmd.exe'.

1>Build log was saved at
"file://c:\ParadisEO-1.2\CMakeFiles\CMakeTmp\cmTryCompileExec.dir\Debug\BuildLog.htm"

1>cmTryCompileExec - 1 error(s), 0 warning(s)

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped
==========

CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:12 (PROJECT)

Configuring incomplete, errors occurred!

Valakinek van ötlete ?

Ui.:Bocs,hogy ilyen hosszú,de gondoltam mindent iderakok

[ Szerkesztve ]

(#612) doc válasza Tussky (#611) üzenetére


doc
nagyúr

gondolom ez lsz a problema:
Project : error PRJ0003 : Error spawning 'cmd.exe'.

de windowst hal'istennek nem hasznalok, szoval tobbet sajna nem tudok segiteni...

esetleg annyit, hogy allitsd at a cmake-et verbose modba, akkor jobban latszik hogy mit akar csinalni ami nem megy neki
(rendes oprendszer alatt a "VERBOSE=1 make" paranccsal bobeszedu lesz, windows alatt passz...)

(#613) labuwx


labuwx
tag

Sziasztok!
Abban kérném a segítségetek, hogy hogyan tudom megállapítani biztosan egész double-ök osztási maradékát?

(#614) Jhonny06 válasza labuwx (#613) üzenetére


Jhonny06
veterán

Maradékos osztással (%) pl. ?

(#615) labuwx válasza Jhonny06 (#614) üzenetére


labuwx
tag

Az csak egészek maradékát tudja megadni, a gond ott volt, hogy az sqrt() lebegőpontossal tér vissza és azzal kellett volna számolni, de most már megtanultam típust konvertálni.
Most viszont egy verem túlcsordulással küzdök, amit egy rekurzitív algoritmus okoz:

bool prime(unsigned long szam, unsigned long oszto=0)
{
if (!oszto) oszto=(unsigned long)sqrt((float)szam);
if ((oszto==1) & (szam>1)) return true;
else if (szam%oszto==0) return false;
else return prime(szam, oszto-1);
}

szam=18292777 -nél verem túlcsordulás.
Meg tudnátok mondani, hogy hogyan tudom megnővelni a vermet és mennyire, hogy ha szam€ us long biztos működjön?
A segítséget előre is köszönöm. :R

(#616) Jester01 válasza labuwx (#615) üzenetére


Jester01
veterán

Hát ezt igen egyszerű ciklussá alakítani, és akkor nem kell hozzá óriási verem ;)

Jester

(#617) labuwx válasza Jester01 (#616) üzenetére


labuwx
tag

Azt tudom, csak most a rekurzív megoldás a feladat és jó lenne ha legalább 1milliárdig működne.

(#618) Jester01 válasza labuwx (#617) üzenetére


Jester01
veterán

Úgy nagy vonalakban belegondoltál mennyi memória kellene ahhoz? Ugye abszolút minimum szinten egy 32 bites rendszeren verem alapú paraméterátadás esetén ez legalább 12 byte/hívás. Ha 1 milliárdig szeretnél menni akkor az már 12GB lenne amit persze már meg sem tudsz címezni. 64 bites rendszeren pedig 24GB kellene, de azt legalább van esélyed megcímezni :U

MOD: ja persze ha a szám megy 1 milliárdig akkor az sqrt miatt kevesebb is elég lesz az igaz.

[ Szerkesztve ]

Jester

(#619) Tussky


Tussky
tag

Sziasztok!

Sikerült megoldani a problémámat,ellenben egy újabbal találkoztam.Amit használok MS VisualStudio + ParadisEO 1.2

Megcsinálom a buildot és a végén feljön egy ablak ami az alábbi kérdést dobja fel:

Executable for debugging session

Ahol megkellene adni egy filet,nekem alapból a C:\WINDOWS\system32\regsvr32.exe-t rakja be,ami nem tudom mennyire nyerő ötlet.

Valakinek van tippje ?

(#620) Jester01 válasza Tussky (#619) üzenetére


Jester01
veterán

Ez emlékeim szerint olyankor van, ha dll-t fordítasz és debuggolni akarod. Ehhez kell egy program ami használja a dll-ed mert hát magában nem lehet futtatni. Na ezt a programot kéri be neked.

Jester

(#621) labuwx


labuwx
tag

Hali!
Valaki legyen szíves megmagyarázni, hogy ha van: usnigned char a=0x00, akkor ~a miért nem egyenlő 0xFF-fel?
Előre is köszönöm.

(#622) doc válasza labuwx (#621) üzenetére


doc
nagyúr

gyanitom azert, mert a char nem feltetlenul 8 bites...
probald ugy, hogy

unsigned char a=0xx
aztan
(~a & 0xFF) == 0xFF

[ Szerkesztve ]

(#623) labuwx válasza doc (#622) üzenetére


labuwx
tag

Ezt kifejtenéd kicsit bővebben pls?

(#624) doc válasza labuwx (#623) üzenetére


doc
nagyúr

melyik reszet?
a char definicio szerint LEGALABB 8 bit, illetve nem lehet nagyobb mint az int
hogy pontosan mekkora, azt megnezheted a sizeof(char) kifejezessel
ha meg mondjuk 16 bites, akkor a negaltja ertelemszeruen nem 0xff

(#625) labuwx válasza doc (#624) üzenetére


labuwx
tag

Nálam 1byte-ot ír méretnek, ezért is próbálkoztam 0xFF-fel.

(#626) Jester01 válasza doc (#624) üzenetére


Jester01
veterán

A sizeof(char) nem fogja megmondani a char méretét mert az definíció szerint mindig 1 lesz. C szabvány, 6.5.3.4.3 pont a sizeof operátorról: "When applied to an operand that has type char, unsigned char, or signed char, (or a qualified version thereof) the result is 1."

A CHAR_BITS az viszont igen :K

Jelenleg azonban nem ez a probléma, hanem az, hogy a ~ operátor (unsigned) int típusra automatikus konverziót csinál, lásd szabvány 6.5.3.3.4: "The result of the ~ operator is the bitwise complement of its (promoted) operand ... The integer promotions are performed on the operand, and the result has the promoted type."

Jester

(#627) Trub


Trub
tag

Azt hogy lehet megcsinálni, hogy a programban jelen legyen egy már lefodított exe, vagy kép, vagy egy akármilyen tipusú fájl, és azt ki tudja másolni a programom egy megadott helyre? Visual studio-t használok, és a neten nem találtam semmit erről a témáról. Egyáltalán lehetséges ez?

(#628) Gyuri16 válasza Trub (#627) üzenetére


Gyuri16
senior tag

ha jol ertem olyat akarsz, hogy egy leforditott programban elerhetoek legyenek kepek, adatok anelkul hogy mas fajlokat kellene masolgatni, tehat minden benne legyen az exeben. ez esetben ajanlom a resource file-okkal valo megismerkedest, ami pont ezt csinalja. vs tapasztalatom nincs, de itt egy link kezdesnek: [link].

Nem vagyok egoista, csak uborkagyalu!

(#629) Trub válasza Gyuri16 (#628) üzenetére


Trub
tag

Köszi, átnyálazom ezt a dolgot.

(#630) doc válasza Trub (#627) üzenetére


doc
nagyúr

ilyen van a Qt-ben is, ott is resource file-on keresztul tudod megadni, es egy sajat kis 'filerendszert' csinal a leforditott programon belul

(#631) Tussky


Tussky
tag

Sziasztok!

Az alábbi sort nem eszi meg a program -> tmp_xi[i+1]=tmp[i]*xi[i];.
Azt értem,hogy a típussal van valami baja,de hogy pontosan hogy lehetne megoldani nem tudom.Ha valakinek van ötlete akkor ne kíméljen.

void DTLZ1(int dimension,int destiny){
int m,k,n,i,tmp;
double g=0.0;
vector<double> xi(dimension);
vector<double> tmp_xi(dimension);
vector<double> fcn(dimension);
double P=3.12;

m=dimension-1;
k=destiny;
xi[m]=0;
n=k+m-1;

for(i=0;i<dimension;i++){
cout << "Kerem az " << (i+1) << "elmet: ";
cin >> tmp;
xi[i]=tmp;
}

for(i=0;i<k;i++){
g+=pow((xi[i]-0.5),2)-cos(20*P*(xi[i]-0.5));
}

g=100*(k+g);

tmp_xi[0]=1.0;
for(i=0;i<dimension;i++){
tmp_xi[i+1]=tmp[i]*xi[i];
}

for(i=0;i<dimension;i++){
fcn[i]=(0.5)*(1+g)*(1-xi[m-i])*tmp_xi[m-i];
}

for(i=0;i<dimension;i++){
cout << fcn[i] << "\n";
}

cout << g << "\n";
}

(#632) Gyuri16 válasza Tussky (#631) üzenetére


Gyuri16
senior tag

a tmp valtozod egy sima int, azt nem tul jo indexelni

Nem vagyok egoista, csak uborkagyalu!

(#633) Tussky válasza Gyuri16 (#632) üzenetére


Tussky
tag

Valóban tmp_xi akart ott lenni,egyszerűen elnéztem és nem tűnt fel.Kösz! :)

(#634) Trub


Trub
tag

Lenne egy kis problémám, a winsock2-vel.
Megírtam msdn-ről a próbakódot, a server, és az ügyfél részét, de nem akar működni.
Lefordul, nincs hiba. Windows 7-en nem működik megfelelően, nem bír csatlakozni az ügyfél a szerverhez, xp-n már el sem indul, mert hiányol pár dll-t, de miután ezeket pótoltam xp-n tökéletesen működik, ahogy kell.

Az ügyfél:
#include <WinSock2.h>
#include <ws2tcpip.h>
#include <iostream>
#pragma comment(lib, "ws2_32")




int main(int argc,char* argv[])
{
WSADATA wsaData;

int iResult;

// Initalize Winsok
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != 0) std::cout << "WSAStartup failed" << iResult;

//declare addrinfo
struct addrinfo *result=NULL, *ptr=NULL, hints;
ZeroMemory(&hints, sizeof(hints));

hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;

//get addressinfo
#define DEFAULT_PORT "27015"
iResult = getaddrinfo(argv[1], DEFAULT_PORT, &hints, &result);

if (iResult != 0)
{
printf("getaddrinfo failed: %d\n", iResult);
WSACleanup();
}

SOCKET ConnectSocket = INVALID_SOCKET;

// Attempt to connect to the first address returned by
// the call to getaddrinfo
ptr=result;

// Create a SOCKET for connecting to server
ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol);

if (ConnectSocket == INVALID_SOCKET)
{
printf("Error at socket(): %ld\n", WSAGetLastError());
freeaddrinfo(result);
WSACleanup();
}

// Connect to server.
iResult = connect( ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen);
if (iResult == SOCKET_ERROR)
{
closesocket(ConnectSocket);
ConnectSocket = INVALID_SOCKET;
}

// Should really try the next address returned by getaddrinfo
// if the connect call failed
// But for this simple example we just free the resources
// returned by getaddrinfo and print an error message

freeaddrinfo(result);

if (ConnectSocket == INVALID_SOCKET)
{
printf("Unable to connect to server!\n");
WSACleanup();
}

//sending and recieving Data on the Client
#define DEFAULT_BUFLEN 512

int recvbuflen = DEFAULT_BUFLEN;
char *sendbuf = "this is a test";
char recvbuf[DEFAULT_BUFLEN];

// Send an initial buffer
iResult = send(ConnectSocket, sendbuf, (int) strlen(sendbuf), 0);
if (iResult == SOCKET_ERROR)
{
printf("send failed: %d\n", WSAGetLastError());
closesocket(ConnectSocket);
WSACleanup();
}

printf("Bytes Sent: %ld\n", iResult);

// shutdown the connection for sending since no more data will be sent
// the client can still use the ConnectSocket for receiving data
iResult = shutdown(ConnectSocket, SD_SEND);
if (iResult == SOCKET_ERROR)
{
printf("shutdown failed: %d\n", WSAGetLastError());
closesocket(ConnectSocket);
WSACleanup();
}

// Receive data until the server closes the connection
do {
iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0);
if (iResult > 0)
printf("Bytes received: %d\n", iResult);
else if (iResult == 0)
printf("Connection closed\n");
else
printf("recv failed: %d\n", WSAGetLastError());
} while (iResult > 0);

// shutdown the send half of the connection since no more data will be sent
iResult = shutdown(ConnectSocket, SD_SEND);
if (iResult == SOCKET_ERROR)
{
printf("shutdown failed: %d\n", WSAGetLastError());
closesocket(ConnectSocket);
WSACleanup();
}

// cleanup
closesocket(ConnectSocket);
WSACleanup();





std::cin.get();
return 0;
}

A server:
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iostream>
#pragma comment(lib, "ws2_32")


int main(int argc, _TCHAR* argv[])
{
WSADATA wsaData;
int iResult;

// Initialize Winsock
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != 0)
{
printf("WSAStartup failed: %d\n", iResult);
}

//Define addinfo
#define DEFAULT_PORT "27015"
struct addrinfo *result=NULL,*ptr=NULL, hints;

ZeroMemory(&hints, sizeof (hints));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
hints.ai_flags = AI_PASSIVE;

iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result);
if (iResult != 0)
{
printf("getaddrinfo failed: %d\n", iResult);
WSACleanup();
}

SOCKET ListenSocket = INVALID_SOCKET;
// Create a SOCKET for the server to listen for client connections
ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
if (ListenSocket == INVALID_SOCKET)
{
printf("Error at socket(): %ld\n", WSAGetLastError());
freeaddrinfo(result);
WSACleanup();
}

// Setup the TCP listening socket
iResult = bind( ListenSocket, result->ai_addr, (int)result->ai_addrlen);
if (iResult == SOCKET_ERROR)
{
printf("bind failed: %d\n", WSAGetLastError());
freeaddrinfo(result);
closesocket(ListenSocket);
WSACleanup();
}

//Listening on a Socket
if ( listen( ListenSocket, SOMAXCONN ) == SOCKET_ERROR )
{
printf( "Error at bind(): %ld\n", WSAGetLastError() );
closesocket(ListenSocket);
WSACleanup();
}


//Accepting a Clientsocket
SOCKET ClientSocket = INVALID_SOCKET;
ClientSocket = accept(ListenSocket, NULL, NULL);

if (ClientSocket == INVALID_SOCKET)
{
printf("accept failed: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
}

//Receiving and Sending Data on the Server
#define DEFAULT_BUFLEN 512

char recvbuf[DEFAULT_BUFLEN];
int iSendResult;
int recvbuflen = DEFAULT_BUFLEN;
// Receive until the peer shuts down the connection
do
{
iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
if (iResult > 0) {
printf("Bytes received: %d\n", iResult);

// Echo the buffer back to the sender
iSendResult = send(ClientSocket, recvbuf, iResult, 0);
if (iSendResult == SOCKET_ERROR) {
printf("send failed: %d\n", WSAGetLastError());
closesocket(ClientSocket);
WSACleanup();
return 1;
}
printf("Bytes sent: %d\n", iSendResult);
} else if (iResult == 0)
printf("Connection closing...\n");
else {
printf("recv failed: %d\n", WSAGetLastError());
closesocket(ClientSocket);
WSACleanup();
return 1;
}

} while (iResult > 0);

// shutdown the send half of the connection since no more data will be sent
iResult = shutdown(ClientSocket, SD_SEND);
if (iResult == SOCKET_ERROR)
{
printf("shutdown failed: %d\n", WSAGetLastError());
closesocket(ClientSocket);
WSACleanup();
}
// cleanup
closesocket(ClientSocket);
WSACleanup();





std::cin.get();
return 0;
}

Visual studio 2010-vel fordítom.

[ Szerkesztve ]

(#635) Trub válasza Trub (#634) üzenetére


Trub
tag

Újraírtam a kódot, és már működik. Nem tudom mi lehetett a baj, lehet, hogy csak a port volt folglat.

(#636) Gergello


Gergello
addikt

Hali!

Ez lenne a feladat:

# Legalább 1 osztályhoz tartozó és legalább 1 globális operator overloading

Az osztályhoz tatozó op overloadingot értem, de a globálist nem annyira. Mitől globális, ez? Mi lesz ha származtatom az osztályt, ott is fel kell venni egy ilyet : friend Vector operator*(int n,const Vector& v); ?

Nem igazán értem. :(

class Vector
{
double x;
double y;
public:
Vector(double x, double y);
Vector operator*(int n); //osztalyhoz tartoz op overloading
friend Vector operator*(int n,const Vector& v); //ez lenne a globalis?
}
Vector Vector::operator*(int n){ //osztalyhoz tartoz op overloading
Vector szorzat(this->x*n,this->y*n);
return szorzat;
}

Vector operator*(int n, const Vector& v){
Vector szorzat(v.x*n,v.y*n);
return szorzat;
}

[ Szerkesztve ]

(#637) bpx válasza Gergello (#636) üzenetére


bpx
őstag

igen, a friend-es sor a globális operator overload
igen, ha származtatod az osztályt, ott újra fel kell venni

egy kis leírás erről: [link]

röviden: ha a bal oldali operandus nem osztály, vagy nincs a kezünkben, akkor enyhíteni kell a megszorításokon, hogy az elérje a tagváltozókat, erre jó a friend

(#638) Frenky89


Frenky89
őstag

Hi!

Egy kis segítséget szeretnék kérni tőletek.

Van három osztályom pl.: Gyumolcs, Alma, Korte. Utóbbi kettő a Gyumolcs-ből származik.
Szeretnék egy 2D-s dinamikus tömböt csinálni, amibe Alma-kat, vagy Korte-ket rakhatok, de nem sikerült rájönnöm, hogy ezt milyen módszerrel kellene.

[ Szerkesztve ]

(#639) Jester01 válasza Frenky89 (#638) üzenetére


Jester01
veterán

Gyumolcs pointereket tegyél a tömbbe.

Jester

(#640) Lakers


Lakers
tag

Sziasztok!

Van egy kockám, ami x, y, és z tengely körül forog. Ez egy view_to_windows transzformációban van megvalósítva. Viszont az is kéne, hogy teljesn képernyőn pattogjon.
Sajnos a pattogást megpróbáltam a csúcsok segítségével de nem jött össze, semmit sem csinál. Mi lehet a baj? Van valakinek rá ötlete? :R

# include "graphics.h"
# include <conio.h>
# include <stdio.h>

#define N 7

struct lap
{
int A,B,C,D,SZIN;
};

typedef struct el
{
int A,B;
} EL;

struct box
{
pont2d MIN,MAX;
};

pont2d vvtrf(box W, box V,pont2d P)
{
pont2d Q;
Q.x=(P.x-W.MIN.x)*(V.MAX.x-V.MIN.x)/(W.MAX.x-W.MIN.x)+V.MIN.x;
Q.y=(P.y-W.MIN.y)*(V.MAX.y-V.MIN.y)/(W.MAX.y-W.MIN.y)+V.MIN.y;
return Q;
};

pont3d forgat(float a,float b,float c,pont3d P)
{
pont3d Q;
pont3d tmp;
//x tengelyre
Q.x=1*P.x;
Q.y=cos(a)*P.y+(-sin(a)*P.z);
Q.z=sin(a)*P.y+cos(a)*P.z;
tmp.x=Q.x;
tmp.y=Q.y;
tmp.z=Q.z;
//y tengelyre
Q.x=cos(b)*tmp.x+sin(b)*tmp.z;
Q.y=1*tmp.y;
Q.z=(-sin(b)*tmp.x)+cos(b)*tmp.z;
tmp.x=Q.x;
tmp.y=Q.y;
tmp.z=Q.z;
//z tengelyre
Q.x=cos(c)*tmp.x+(-sin(b)*tmp.y);
Q.y=sin(c)*tmp.x+cos(a)*tmp.y;
Q.z=1*tmp.y;
return Q;
};

pont2d centproj(int s,pont3d Q)
{
pont2d P;
P.x=Q.x*(s/(s-Q.z));
P.y=Q.y*(s/(s-Q.z));
return P;
};

pont3d metszilleszt (pont3d A, pont3d B)
{
pont3d C;
C.x = A.y * B.z - A.z * B.y;
C.y = - A.x * B.z + A.z * B.x;
C.z = A.x * B.y - A.y * B.x;
return C;
};

int main(void)
{
int u, v, lnx, lny, lkx, lky, dx=1, dy=1;
int gd,gm,page=0,i;
gd = VGA;
gm = VGAMED;
initgraph(&gd,&gm,"");

u=getmaxx()/2;
v=getmaxy()/2;

pont2d l[8],t[8];
pont3d f[8];
pont3d p[8]={{1,-1,1},
{1,-1,-1},
{-1,-1,-1},
{-1,-1,1},
{1,1,1},
{1,1,-1},
{-1,1,-1},
{-1,1,1}};
el elek[12]={{0,1},{1,2},{2,3},{3,0},{4,5},{5,6},{6,7},{7,4},{0,4},{1,5},{2,6},{3,7}};
lap lapok[6] = {{0,1,5,4,1},
{1,2,6,5,2},
{2,3,7,6,3},
{3,0,4,7,4},
{4,5,6,7,5},
{1,0,3,2,6}};
pont3d a1,n,AB,BC;;
float a=1*M_PI/180;
float b=1*M_PI/180;
float c=1*M_PI/180;
box V,W;
V.MIN.x=10; W.MIN.x=-3;
V.MIN.y=300; W.MIN.y=-3;
V.MAX.x=310; W.MAX.x=3;
V.MAX.y=10; W.MAX.y=3;

for (;;)
{
setactivepage(page);
cleardevice();

a+=1*M_PI/180;
b=c=a;

delay(10);
for (i=0; i<8; ++i)
{
f[i]=forgat(a,b,c,p[i]);
l[i]=centproj(200,f[i]);
t[i]=vvtrf(W,V,l[i]);
}


for (i=0; i<6; ++i)
{
pont2d A,B,C,D;
A=t[lapok[i].A];
B=t[lapok[i].B];
C=t[lapok[i].C];
D=t[lapok[i].D];

AB.x=B.x-A.x;
AB.y=B.y-A.y;
BC.x=C.x-B.x;
BC.y=C.y-B.y;

int poly[8] = {(int)A.x,(int)A.y, (int)B.x,(int)B.y, (int)C.x,(int)C.y, (int)D.x,(int)D.y};
//setfillstyle(INTERLEAVE_FILL,lapok[i].SZIN);
//setfillstyle(SOLID_FILL,lapok[i].SZIN);

n=metszilleszt(AB,BC); //AB × BC
a1=(pont3d)f[lapok[i].A];

if (n.x*(-1*a1.x)+n.y*(-1*a1.y)+n.z*(200-(-1*a1.z))>0)
{ setcolor(lapok[i].SZIN);
fillpoly(4,poly);
//setcolor(WHITE);
}



}
//pattogtatás
lnx=lny=0;
lkx=getmaxx();
lky=getmaxy();

for (i=0; i<N; ++i)
{
if (p[i].x>lnx)
lnx=(int)p[i].x;

if (p[i].x<lkx)
lkx=(int)p[i].x;

if (p[i].x>lny)
lny=(int)p[i].x;

if (p[i].x<lky)
lky=(int)p[i].x;
}

if (lnx>=getmaxx()-1 || lkx<=1)
dx=-dx;
if (lny>=getmaxy()-1 || lky<=1)
dy=-dy;

u+=dx; v+=dy;

setvisualpage(page);
page = 1-page;
if (kbhit())
break;
}
closegraph();
return 0;
}

(#641) Frenky89 válasza Jester01 (#639) üzenetére


Frenky89
őstag

Kösz szépen! :R

(#642) Jester01 válasza Lakers (#640) üzenetére


Jester01
veterán

Ha jól értelmezem az u, v lenne az eltolás vektor. Azt viszont sehol nem látom, hogy ezt hol használod valamire is. Így nem csoda ha nem csinál semmit.

Jester

(#643) Lakers válasza Jester01 (#642) üzenetére


Lakers
tag

A main résznél van az u, v inicalizálva.
u=getmaxx()/2; v=getmaxy()/2;, a másik két eltoltásos feladatom alapján néztem meg. Azok működnek, de itt valami bibit követhetek el.

(#644) Jester01 válasza Lakers (#643) üzenetére


Jester01
veterán

Azt tudom, hogy inicializálva hol van. Csak sehol nem használod.

Jester

(#645) donyuska


donyuska
csendes tag

Sziasztok!

Nekem az lenne a problémám, hogy most kezdtem a C++ tanulását (iskolában nyomják én nem tanulnám, ha nem kellene :DD ) és van egy beadandóm amit nem tudok megoldani, mert egy kicsit fejlettebb tudás szükséges hozzá.
Ha tudna valaki segíteni azt nagyon szépen megköszönném.
A segítséget előre is köszönöm!

Feladat:

Írjon C++ programot, melyben definiál egy vektor osztályt. Az osztály adatai:
a vektor mérete (elemek száma) és a dinamikusan tárolt vektor. Definiáljon az
osztályhoz műveleteket:
-a méretet paraméterként tartalmazó konstruktort, ami a méret megadásán
kívül 0-ra is állítja a vektor elemeit!
–a vektort beolvasó és kiíró, valamint egy index-el megadott elemét módosító
eljárást
–a vektor egy elemét lekérdező függvényt
Származtasson ebből egy zh vektor osztályt, melyet úgy kell elképzelni, hogy
egy osztály N tanulója által írt zh eredményét tartalmazza, kiegészítve az N
tanuló nevével
Az osztály az ős vektorosztály beolvasó és kiíró eljárását definiálja felül egy, a
tanulók neveit is tartalmazó barátságosabb beolvasással és kiírással! Rendeljen
az osztályhoz egy összeadás operátort is, mellyel két különböző zh
osztályzatait össze tudja adni, ha ugyanazok a tanulók írták meg a zh-t,
különben legyen 0 értékeket tartalmazó zh vektor az operátor eredménye.
A zh vektor osztály felhasználásával oldja meg az alábbi feladatot: N tanuló írt
zh-t, és megadtuk az osztályzataikat. Készítsen C++ programot, amely K zh
eredményéből tanulónként meghatározza a zh-k átlagát és ebből meghatározza
kerekítéssel minden tanuló osztályzatát! Az átlagszámításhoz használja fel az
összeadás operátort!

(#646) Csakénvagyok válasza donyuska (#645) üzenetére


Csakénvagyok
őstag

Ugyanmár, senki sem fogja neked leírni.

Olvasgas, kezdetnek talán nézz bele ebbe, két-három oldal elolvasása után már talán le is fogod programozni.

(#647) Lakers válasza Jester01 (#644) üzenetére


Lakers
tag

És van valami ötleted, hogy hol kéne felhasználni az u,v vektoromat? Én akár hogy próbálkozom, semmit sem reagál rá...

(#648) Jester01 válasza Lakers (#647) üzenetére


Jester01
veterán

Valahol el kellene tolni vele a pontokat.

Jester

(#649) Lakers válasza Jester01 (#648) üzenetére


Lakers
tag

Ennél jobb ötletem nem volt a tológatásra, na mindegy, majd mond rá valamit a gyakvezér.
lnx=lny=0;
lkx=getmaxx();
lky=getmaxy();

for (i=0; i<N; ++i)
{
if (p[i].x+u>lnx)
lnx=(int)p[i].x;

if (p[i].x+u<lkx)
lkx=(int)p[i].x;

if (p[i].x+v>lny)
lny=(int)p[i].x;

if (p[i].x+v<lky)
lky=(int)p[i].x;
}

if (lnx+u>=getmaxx()-1 || lkx<=1)
dx=-dx;
if (lny+v>=getmaxy()-1 || lky<=1)
dy=-dy;

u+=dx; v+=dy;

(#650) Bettina87


Bettina87
csendes tag

Sziasztok!

Lenne egy kis problémám. Kicsit elcsúsztam a beadandómmal és legkésőbb holnap kéne leadnom. Jelenleg az elkezdéssel is bajaim vannak :S:(, szóval minden apró kis segítségért hálás lennék, mivel nem igazán tudom megcsinálni. :( Engem az itcafe-n már egyszer megmentettek, remélem most is így lesz. :) Előre is köszönöm:)

A feladat:

Írjon C++ programot éttermi menü és megrendelés kezeléséhez!

Definiáljon egy tétel osztályt, ami egy étlap egy tételéről tartalmaz információkat ( étel
vagy ital, neve, ára stb.).
Definiáljon az osztályhoz konstruktort, beolvasó, kiíró, lekérdező és módosító műveleteket. Származtasson ebből egy angol nevű utód osztályt, amely az őshöz képest pluszként a a tétel angol nevét tartalmazza.
Az osztály az ősosztály beolvasó és kiíró eljárását definiálja felül egy, a tétel angol nevét is kezelő résszel.
A tétel és az utód osztály felhasználásával írjon programot, ami az osztályok minden műveletét teszteli, valamint egy vendég által kiválasztott tételek alapján kiszámolja a fizetendő összeget!
Definiáljon a feladathoz egy bármilyen operátort és legyen a programban azt kipróbáló rész is!

Copyright © 2000-2024 PROHARDVER Informatikai Kft.