C/C++

  • Креатор на темата Креатор на темата Драган
  • Време на започнување Време на започнување
Какви стандарди измизлувам, сум видел милијарда програми што делат еден ист header и повикуваат функции од него

Вакви:

Еве на пр. код за множење , делење собирање и одземање, самите операции да се во header-ot додека вредностите во cpp-to.

Едно е декларација на функција, а друго дефиниција на фунцкија.
Header-ot треба да го содржи само интерфејсот, ништо повеќе. (Има исклучоци за inline операции, мада што има поубав начин... али тоа не е битно во муабетов)

Ме сфаќаш? :smir:
 
Едно е декларација на функција, а друго дефиниција на фунцкија.
Header-ot треба да го содржи само интерфејсот, ништо повеќе. (Има исклучоци за inline операции, мада што има поубав начин... али тоа не е битно во муабетов)

Ме сфаќаш? :smir:


Би те сватил ако објасниш попрактично

#include <iostream>
#include <math>
using namespace std;

#define N_PNT 50

typedef struct TPoint {
int x;
int y;
} TPT;

TPT Points[] =
{{73, 58}, {45, 19}, {89, 6}, {22, 40}, {92, 16}, {65, 66},
{55, 4}, {45, 18}, {64, 13}, {56, 81}, {73, 33}, {58, 40},
{40, 71}, {90, 60}, {16, 47}, {6, 52}, {62, 91}, {90, 83},
{69, 78}, {61, 62}, {71, 57}, {32, 53}, {67, 91}, {83, 89},
{14, 53}, {45, 35}, {11, 6}, {9, 50}, {70, 65}, {50, 47},
{65, 57}, {40, 68}, {44, 40}, {77, 61}, {27, 59}, {27, 54},
{94, 89}, {90, 88}, {61, 66}, {72, 4}, {11, 41}, {3, 74},
{44, 33}, {47, 79}, {68, 33}, {32, 64}, {66, 23}, {55, 12},
{37, 54}, {28, 95}};

double GetDistancePoints( TPT A, TPT B )
{
return( sqrt( pow( (B.x - A.x), 2 ) + pow( (B.y - A.y), 2 ) ) );
}

int main(int argc, char* argv[])
{
int i, j, k,
MaxI, MaxJ, MinI, MinJ, MaxSI, MaxSJ, MaxSK;
double MaxD, MinD, D, A, B, C, P, S, MaxS;

for ( i = 0; i < N_PNT; i++ )
for ( j = i + 1; j < N_PNT; j++ ) {
D = GetDistancePoints( Points, Points[j] );
if ( i == 0 && j == 1 ) {
MaxD = MinD = D;
MaxI = MinI = 0;
MaxJ = MinJ = 1;
}
else {
if ( D > MaxD ) {
MaxD = D;
MaxI = i;
MaxJ = j;
}

if ( D < MinD ) {
MinD = D;
MinI = i;
MinJ = j;
}
}
}

for ( i = 0; i < N_PNT; i++ )
for ( j = i + 1; j < N_PNT; j++ )
for ( k = j + 1; k < N_PNT; k++ ) {
A = GetDistancePoints( Points, Points[j] );
B = GetDistancePoints( Points, Points[k] );
C = GetDistancePoints( Points[j], Points[k] );
P = (A + B + C) / 2;
S = sqrt( P * (P - A) * (P - B) * (P - C) );

if ( i == 0 && j == 1 && k == 2 ) {
MaxS = S;
MaxSI = i;
MaxSJ = j;
MaxSK = k;
}
else
if ( MaxS < S ) {
MaxSI = i;
MaxSJ = j;
MaxSK = k;
MaxS = S;
}
}

cout << "1) MinDistancePoints = " << MinD << " between points P"
<< MinI + 1 << "(" << Points[MinI].x << ", "
<< Points[MinI].y << ") and "
<< "P" << MinJ + 1 << "(" << Points[MinJ].x << ", "
<< Points[MinJ].y << ");" << endl;

cout << "2) MaxDistancePoints = " << MaxD << " between points P"
<< MaxI + 1 << "(" << Points[MaxI].x << ", "
<< Points[MaxI].y << ") and "
<< "P" << MaxJ + 1 << "(" << Points[MaxJ].x << ", "
<< Points[MaxJ].y << ");" << endl;

cout << "3) Largest area of triangle = " << MaxS << " with points P"
<< MaxSI + 1 << "(" << Points[MaxSI].x << ", "
<< Points[MaxSI].y << ") and "
<< "P" << MaxSJ + 1 << "(" << Points[MaxSJ].x << ", "
<< Points[MaxSJ].y << ") and "
<< "P" << MaxSK + 1 << "(" << Points[MaxSK].x << ", "
<< Points[MaxSK].y << ");" << endl;

system( "pause" );

return 0;
}

Како да го разделам ова во header i source????
 
Би те сватил ако објасниш попрактично


Како да го разделам ова во header i source????

Нека хедерот се вика:
Funkcija.h
Во него ќе имаш:

#ifndef FUNKCIJA_H
#define FUNKCIJA_H

#include <iostream>
#include <math>
#include <stdlib.h>
using namespace std;
#define N_PNT 50

typedef struct TPoint {
int x;
int y;
} TPT;

double GetDistancePoints( TPT A, TPT B );
#endif

Во Funkcija.cpp ќе имаш:

#include "Funkcija.h" // treba da e vo ist folder kako i Funkcija.cpp

TPT Points[] =
{{73, 58}, {45, 19}, {89, 6}, {22, 40}, {92, 16}, {65, 66},
{55, 4}, {45, 18}, {64, 13}, {56, 81}, {73, 33}, {58, 40},
{40, 71}, {90, 60}, {16, 47}, {6, 52}, {62, 91}, {90, 83},
{69, 78}, {61, 62}, {71, 57}, {32, 53}, {67, 91}, {83, 89},
{14, 53}, {45, 35}, {11, 6}, {9, 50}, {70, 65}, {50, 47},
{65, 57}, {40, 68}, {44, 40}, {77, 61}, {27, 59}, {27, 54},
{94, 89}, {90, 88}, {61, 66}, {72, 4}, {11, 41}, {3, 74},
{44, 33}, {47, 79}, {68, 33}, {32, 64}, {66, 23}, {55, 12},
{37, 54}, {28, 95}};

double GetDistancePoints( TPT A, TPT B )
{
return( sqrt( pow( (B.x - A.x), 2 ) + pow( (B.y - A.y), 2 ) ) );
}

И на крај направи еден Main.cpp фајл во кој ќе имаш:

#include "Funkcija.h" //Funkcija.h i Funkcija.cpp treba da se vo ist folder //so Main.cpp
int main(int argc, char* argv[])
{
int i, j, k,
MaxI, MaxJ, MinI, MinJ, MaxSI, MaxSJ, MaxSK;
double MaxD, MinD, D, A, B, C, P, S, MaxS;

for ( i = 0; i < N_PNT; i++ )
for ( j = i + 1; j < N_PNT; j++ ) {
D = GetDistancePoints( Points, Points[j] );
if ( i == 0 && j == 1 ) {
MaxD = MinD = D;
MaxI = MinI = 0;
MaxJ = MinJ = 1;
}
else {
if ( D > MaxD ) {
MaxD = D;
MaxI = i;
MaxJ = j;
}

if ( D < MinD ) {
MinD = D;
MinI = i;
MinJ = j;
}
}
}

for ( i = 0; i < N_PNT; i++ )
for ( j = i + 1; j < N_PNT; j++ )
for ( k = j + 1; k < N_PNT; k++ ) {
A = GetDistancePoints( Points, Points[j] );
B = GetDistancePoints( Points, Points[k] );
C = GetDistancePoints( Points[j], Points[k] );
P = (A + B + C) / 2;
S = sqrt( P * (P - A) * (P - B) * (P - C) );

if ( i == 0 && j == 1 && k == 2 ) {
MaxS = S;
MaxSI = i;
MaxSJ = j;
MaxSK = k;
}
else
if ( MaxS < S ) {
MaxSI = i;
MaxSJ = j;
MaxSK = k;
MaxS = S;
}
}

cout << "1) MinDistancePoints = " << MinD << " between points P"
<< MinI + 1 << "(" << Points[MinI].x << ", "
<< Points[MinI].y << ") and "
<< "P" << MinJ + 1 << "(" << Points[MinJ].x << ", "
<< Points[MinJ].y << ");" << endl;

cout << "2) MaxDistancePoints = " << MaxD << " between points P"
<< MaxI + 1 << "(" << Points[MaxI].x << ", "
<< Points[MaxI].y << ") and "
<< "P" << MaxJ + 1 << "(" << Points[MaxJ].x << ", "
<< Points[MaxJ].y << ");" << endl;

cout << "3) Largest area of triangle = " << MaxS << " with points P"
<< MaxSI + 1 << "(" << Points[MaxSI].x << ", "
<< Points[MaxSI].y << ") and "
<< "P" << MaxSJ + 1 << "(" << Points[MaxSJ].x << ", "
<< Points[MaxSJ].y << ") and "
<< "P" << MaxSK + 1 << "(" << Points[MaxSK].x << ", "
<< Points[MaxSK].y << ");" << endl;

system( "PAUSE" );

return 0;
}

Ако имаш некој проблем пиши може ќе можам да помогнам
 
Фала друже :vozbud:
 
Ova so CodeBlocks

C:\Documents and Settings\usr\Desktop\CodeBlocksProjects\GLUT\distance\main.cpp||In function `int main(int, char**)':|

C:\Documents and Settings\usr\Desktop\CodeBlocksProjects\GLUT\distance\main.cpp|10|error: `Points' was not declared in this scope|

C:\Documents and Settings\usr\Desktop\CodeBlocksProjects\GLUT\distance\main.cpp|34|error: `Points' was not declared in this scope|

C:\Documents and Settings\usr\Desktop\CodeBlocksProjects\GLUT\distance\main.cpp|56|error: `Points' was not declared in this scope|
||=== Build finished: 3 errors, 0 warnings ===|
 
Ova so CodeBlocks

C:\Documents and Settings\usr\Desktop\CodeBlocksProjects\GLUT\distance\main.cpp||In function `int main(int, char**)':|

C:\Documents and Settings\usr\Desktop\CodeBlocksProjects\GLUT\distance\main.cpp|10|error: `Points' was not declared in this scope|

C:\Documents and Settings\usr\Desktop\CodeBlocksProjects\GLUT\distance\main.cpp|34|error: `Points' was not declared in this scope|

C:\Documents and Settings\usr\Desktop\CodeBlocksProjects\GLUT\distance\main.cpp|56|error: `Points' was not declared in this scope|
||=== Build finished: 3 errors, 0 warnings ===|


Пробај префрли ги:

TPT Points[] =
{{73, 58}, {45, 19}, {89, 6}, {22, 40}, {92, 16}, {65, 66},
{55, 4}, {45, 18}, {64, 13}, {56, 81}, {73, 33}, {58, 40},
{40, 71}, {90, 60}, {16, 47}, {6, 52}, {62, 91}, {90, 83},
{69, 78}, {61, 62}, {71, 57}, {32, 53}, {67, 91}, {83, 89},
{14, 53}, {45, 35}, {11, 6}, {9, 50}, {70, 65}, {50, 47},
{65, 57}, {40, 68}, {44, 40}, {77, 61}, {27, 59}, {27, 54},
{94, 89}, {90, 88}, {61, 66}, {72, 4}, {11, 41}, {3, 74},
{44, 33}, {47, 79}, {68, 33}, {32, 64}, {66, 23}, {55, 12},
{37, 54}, {28, 95}};

од Funkcija.cpp во Funkcija.h, после последниот ред

А ако и тоа не сака префрли ги
TPT Points[] =
{{73, 58}, {45, 19}, {89, 6}, {22, 40}, {92, 16}, {65, 66},
{55, 4}, {45, 18}, {64, 13}, {56, 81}, {73, 33}, {58, 40},
{40, 71}, {90, 60}, {16, 47}, {6, 52}, {62, 91}, {90, 83},
{69, 78}, {61, 62}, {71, 57}, {32, 53}, {67, 91}, {83, 89},
{14, 53}, {45, 35}, {11, 6}, {9, 50}, {70, 65}, {50, 47},
{65, 57}, {40, 68}, {44, 40}, {77, 61}, {27, 59}, {27, 54},
{94, 89}, {90, 88}, {61, 66}, {72, 4}, {11, 41}, {3, 74},
{44, 33}, {47, 79}, {68, 33}, {32, 64}, {66, 23}, {55, 12},
{37, 54}, {28, 95}};

во Main.cpp



Извини што не можев да пишам порано
 
ако може некој да ми ја најде грешката, не верувам дека ќе му биде тешко на некој шо повеќе се разбира од мене
using namespace std;
# include <iostream.h>
# include <cmath>
int main()
{
int i,j;
cout<<"mojvnesen tekst 1"<<endl<<"mojvnesen tekst 2"<<endl;
cout<<"zapsi edna brojka";
cin>>j;
for (i=0,i<j,i++)
{
cout<<" mojvnesen tekst 3";
if (j%10==0){cout<<endl;
}
}
if(j<10){cout<<"mojvnesen tekst 4"<<j<<endl;
}
else {
cout<<"mojvnesen tekst 5"<<j<<"pati"<<endl<<"mojvnesen tekst 6"<<endl;
}
system("PAUSE");
return 0;
}
фала однапред
 
ако може некој да ми ја најде грешката, не верувам дека ќе му биде тешко на некој шо повеќе се разбира од мене
фала однапред

for циклусот вака направи го

Код:
for (i=0;i<j;i++)

Значи место запирките... стави точка-запирка. Мислам дека само тоа е грешката.

Друже... една забележка... кога работиш во C++ користи ја библиотеката iostream, библиотеката cmath во овој случај не ти треба (доволна ти е само iostream) и кога пишуваш код гледај да ти биде посреден малце :) ако би работел на некој посложен програм ќе се изгубиш ако не ти е среден кодот. Исто така за нов ред поедноставно би ти било да користиш \n место endl... на крај место system("pause") користи cin.get() и тоа return 0 не ти е потребно доколку сакаш програмата да заврши по извршувањето... и последна ствар... кога декларираш променливи одма доделувај им вредност зашто во спротивно тие си земаат вредност од нивната меморија и може да се деси да добиваш грешни резултати...

Код:
# include <iostream>

using namespace std;

int main()
{
    int j=0;
    cout << "Moj vnesen tekst 1.\nMoj vnesen tekst 2.\n\n";
    cout << "Kolku pati sakate da se povtori zborot 'Zdravo' ? ";
    cin >> j;
    
    cout << endl;
    
    for (int i=1;i<=j;i++){
        cout<<"Zdravo\tPovtoruvane br: " << i <<endl;
        }
        
    cout << endl;
    
    if (j%10==0){
                 cout<<"Brojot " << j << " e cel broj.\n\n";
                 }
                 else
                 {
                     cout<<"Brojot " << j << " ne e cel broj.\n\n";
                 }
                     
    if(j<10){
             cout<<"Brojot " << j << " e pomal od 10.\n";
             }
             else
             {
                 cout<< "Brojot " << j << " e ednakov ili pogolem od 10.\n";
             }
             
cin.get();
cin.get();
}
 
for циклусот вака направи го

Код:
for (i=0;i<j;i++)
Значи место запирките... стави точка-запирка. Мислам дека само тоа е грешката.

фала многу другар
инаку немам работено С++ одамна затоа вакви глупи грешкиме збунија, а програмата ми беше колку да се позезам со едно дете не е ништо посериозна
уште ендаш фала
 
Ako moze pomos pri resavanje na ovaa programa vo C:

1. Dadeni se n tocki vo ramninata. Da se najde prosekot asr od dolzinite na site dijagonali na formiraniot n-agolnik i da se ispecatat koordinatite na krajnite tocki na stranata od n-agolnikot koja ima najpriblizna dolzina do asr.
 
Ako moze pomos pri resavanje na ovaa programa vo C:

1. Dadeni se n tocki vo ramninata. Da se najde prosekot asr od dolzinite na site dijagonali na formiraniot n-agolnik i da se ispecatat koordinatite na krajnite tocki na stranata od n-agolnikot koja ima najpriblizna dolzina do asr.

Тригонометрија ? :jaj:

Математички се решава по ред...

D=n(n-3)/2
asr = вкупниот збир на должините / вкупниот број на дијагоналите.

...и се така додека да дојдеш до решението, али во програмирањето да знаеш дека ако идеш така по ред нема да ти е точна задачата. Значи тебе ти се бараат само координатите, а не ти се бара цела задача по ред. Доколку би ја решавал дела задача по ред и ако дојде до пресметки со поголеми броеви нема да ти дава точни резултати програмата.
Е сеа незнам точно по која „формула“ би ја решавал задачава (мразам математика), али ако ми текне некое решение ќе го пишам.
 
Како во Visual C++ да ги менувам вредностите на properties за диалог , но преку код. На пример со код сакам да ја сменам вредноста на Border од Dialog Frame во None.
 
Како во Visual C++ да ги менувам вредностите на properties за диалог , но преку код. На пример со код сакам да ја сменам вредноста на Border од Dialog Frame во None.

Ако мислиш за CLR Windows App... вака...

Еве ти пример како да ја сетираш позицијата да речеме на еден лабел:
Код:
// Кај „x“ пишуваш вредност за хоризонтална позоција.
// Кај „y“ пишуваш вредност за вертикална позоција.
label1->Location = System::Drawing::Point(x, y);

//Еве детално како би изгледало...
label1->Location = System::Drawing::Point(40, 161);
Еве ти пример и за боја на лабел:
Код:
label1->ForeColor = System::Drawing::Color::Green;
Сите елементи така ги „кодираш“... значи како „дефиниција“ вака ќе му дојде:
Код:
imetoNaElementot->propertiesDelot = System:: ...
// Кога ќе го пишеш scope операторот ќе ти се појави слегнувачки прозор... 
// Листај и барај што ти треба :)

Ваљда разбра што сакав да кажам :)
 
Дада ова ми е јасно. Ова е за сетирање на контроли. Но мене не ми треба да подесувам контроли туку самиот диалог. За диалогот мислам неможе вака т.е незнам со кое име/променлива да му пристапам
 

Kajgana Shop

Back
На врв Bottom