1. leht 1-st

C++ arendus...

Postitatud: 10.11.2008, 22:23
Postitas olavsu1
Minu esmane katsetus graafilise keskkonna jaoks miskit teha. See peab olema utiliit mis ruutvõrrandit lahendab. Ilma igasuguse ette vamistuseta on nii kaugele jõutud KDevelopi kasutades.

link: http://n6ges.pri.ee/ruutvorrand.tar.gz

Äkki see inimene vaatab üle selle asja ja viskab mõnel lingi normaalsele õppevahendile. :)

//tahaks loota, et läbi ei sõimata.

Postitatud: 10.11.2008, 23:11
Postitas eric
laadisin paketi alla, kuid kuna ./configure "soovitas" kde arenduspakettide paigaldamist jätsin kompileerimise pooleli.

seejärel vaatasin lähtekoodi, kuid midagi otseselt sinu programmeeritud (peale akna disainimise) (veel) ei leidnud - kogu "kupatus" on enamjaolt kdevelop'i poolt genereeritud.

soovitaks võibolla alustada lihtsamast otsast - installeeri QT arenduspaketid (libqt4-dev, qt4-doc, qt4-dev-tools) ja uuri qt dokumentatsiooni (väga selge ja ülevaatlik + piisavalt näiteid). proovi sellessamas kdevelope-is mõni QT näide kompileerida ("tööle saada") ja siis sama näite lähtekoodiga "mängida" (i.e. seda muuta, seejärel kompileerida ning vaadata, kas programmi "käitumine" muutus nagu olid kavandand).

edu ja järjekindlust soovides!

e.

ps. alustasin kdevelop-i kasutamisega umbes 2 aasta eest ja nüüd ei vahetaks "teda" naljalt enam millegi muu vastu. eelnevalt olin ca 10 aastat kasutand (windoozis) borland c++ builderit. kdevelop on super ja ka qt-teegid (libraries) on super (ega's KDE muidu neil põhineks, vää ;) ?)

Postitatud: 11.11.2008, 00:08
Postitas olavsu1
jah tõsi peale akna disaini ei suutudki mikit teha..

järgmine katsetus....

Kood: Vali kõik

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;

int rehkendus(){
int a, b, c, d, x1, x2;
	cout << "Tere, ruutvõrrandi rehkendaja olen. arvud palun :)" << endl;
	cout << "Sisesta arv a ";
	cin >> a;
	cout << "Sisesta arv b ";
	cin >> b;
	cout << "Sisesta arv c ";
	cin >> c;
	d=b*b-4*a*c;
if (d < 0){
	cout << "Diskriminant on negatiivne (" << d <<") . Ruutvõrrandit ei teki.\n";
	return EXIT_SUCCESS;  //väljavise
}else{
	cout << "Diskrminant on " << d  << endl;
	x1= -b+sqrt(d)/2*a;
	x2= -b-sqrt(d)/2*a;
	cout << "x1 = " << x1  << endl;
	cout << "x2 = " << x2  << endl;
}
}

int main(int argc, char *argv[])
{
rehkendus();
/*int jarg, J, n;
cout << "Kas jätkata?  J/n"<< endl; // rehkendaks veel???
cin >> jarg;
if(jarg == J) return rehkendus(); //jätkamine
if(jarg == n)return EXIT_SUCCESS; //väljavise 
//krt, see vuristab kogu jutu ette, ükshaaval peaks..
*/
return EXIT_SUCCESS;

 
}
see sai käsurea jaoks c++ ikka.

Postitatud: 11.11.2008, 00:21
Postitas johnsmith
Pole küll mingi ütleja aga äkki peaks siiski proovima ilma graafilise arenduskeskonnata alguses läbi ajada. Saab korralikult selgeks kuidas need komponendid seal asetatakse ja siis võib ju pärast Kdevelopi kasutada.

Ma hakkasin ka vahepeal qt -d õppima aga asi jäi kuidagi katki vist ajapuuduse taha (vabanduse leiab alati). Samas oskan panna kokku graafilisi progesid javaga ja seda on parem õppida tavalise tekstiredaktoriga (jälle subjektiivne arvamus).

Qt ja java graafika progemise vahel on teatud sarnasus ei tea kes kelle pealt järele teinud on :)

Lihtsalt mõte mida ei pea mingil juhul keegi tõsiselt võtma.

Postitatud: 12.11.2008, 22:59
Postitas olavsu1
tore kui asi tööle hakkab nagu soovitud. puudu on vaid sisestatava info kontroll, et kas on arv või ei ole arv :)

Kood: Vali kõik

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream>
#include <cstdlib>
#include <math.h>


using namespace std;
char jarg = 0;

int end() //funksioon, mis välja viskab
{
	return EXIT_SUCCESS;
}//väljavikaja lõpp

int rehkendus(){

int a, b, c, d, x1, x2;
	
	cout << "Sisesta arv a ";
	cin >> a;
	cout << "Sisesta arv b ";
	cin >> b;
	cout << "Sisesta arv c ";
	cin >> c;
	d=b*b-4*a*c;
if (d < 0){
	cout << "Diskriminant on negatiivne (" << d <<") . Ruutvõrrandit ei teki.\n";
	
}else{
	cout << "Diskrminant on " << d  << endl;
	x1= (-b+sqrt(d))/(2*a);
	x2= (-b-sqrt(d))/(2*a);
	cout << "x1 = " << x1  << endl;
	cout << "x2 = " << x2  << endl;
} //if else lõpp
	cout << "Kas jätkata?  j/e"<< endl; // rehkendaks veel???
	cin >> jarg;
switch(jarg){
	case 'j': 
	rehkendus(); //rehkendame veel
	break;
	case 'e': 
	end(); //ei rehkenda veel
	break;
	
} //lüliti lõpp
}//rehkendus lõpp



int main(int argc, char *argv[])
{
cout << "Tere, ruutvõrrandi rehkendaja olen. arvud palun :)" << endl;

rehkendus(); //rehkenduse väljakutse


}//main lõpp

Postitatud: 01.12.2008, 00:50
Postitas KristjanS
KAs keegi teist ühele programmile lisavõimaluse viitsiks meisterdada? Peaks imelihtne olema, aga ma ei jaga antud programmeerimiskeelest essugi.

Programm ise asub siin:
http://muquit.com/muquit/software/grabc/grabc.html

Mis see teeb? Käivitad programmi, see muudab ikooni ja kui klõpsu teed, siis programm tuvastab selle koha koordinaadid ja värvi.

Mis mul vaja? 1) Võimalust määrata käsitsi piksli koordinaadid, ilma hiireklõpsuta, nii et see annab siis selle piksli värvi 2) Võimalust saada ainult koordinaadid või värvi

Programm ise on ~300 rida, kui ainult natukene oskaks, siis teeks ise ära. Vaja ühe makro jaoks. :D

Postitatud: 01.12.2008, 16:00
Postitas wk
KristjanS kirjutas:Mis see teeb? Käivitad programmi, see muudab ikooni ja kui klõpsu teed, siis programm tuvastab selle koha koordinaadid ja värvi.
Kuna ma C-d ise ei valda siis täpsustaks ainult, et praeguses seisus tagastab see programmike ainult RGB-väärtuse, seda 16- ja 10-süsteemis. Kuna üks läheb STDERRi ja teine STDOUTi, siis saab valida, kumba skriptis mugavam kasutada on.

Postitatud: 04.05.2009, 15:18
Postitas bobc
Pakuks omaltpoolt välja väikese rakenduse kuidas lugeda pixli värvi etteantud kordinaadilt. sgc_out.tar.bz2
Sai natuke xlib programmeerimis manuali loetud (pole eriline C progeja).

Kood: Vali kõik

make sgc
sgc 100 100
sgc 100 100 -hex
Toimis xorg-server 1.5.1 ja xorg-server 1.6.1 peal, ei oska kommenteerida kuidas toimib/ei toimi kui desktop efektid on kasutusel (compositing window manager).

Postitatud: 04.05.2010, 03:39
Postitas olavsu1
uus küsimus siia,

nimelt vajaks juhendamist, kuidas panna rakendus kontrollima parajasti sisseloginud kasutaja gruppi.

kui kasutaja on grupis SEE siis rakendus lubab teha SEDA ja kui kasutaja on grupis TOO siis lubab teha TODA
kui ollakse mõlemates kruppides siis lubatakse mõlemaid operatsioone teha.

Postitatud: 04.05.2010, 08:35
Postitas -ordi-
olavsu1 kirjutas:uus küsimus siia,

nimelt vajaks juhendamist, kuidas panna rakendus kontrollima parajasti sisseloginud kasutaja gruppi.

kui kasutaja on grupis SEE siis rakendus lubab teha SEDA ja kui kasutaja on grupis TOO siis lubab teha TODA
kui ollakse mõlemates kruppides siis lubatakse mõlemaid operatsioone teha.
Mul ei ole praegust võimalus proovida aga umbes nii saad id kätte.

Kood: Vali kõik

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

Kood: Vali kõik

..................................
      
      int current_uid = getuid();
      printf(”My UID is: %d. My GID is: %d\n”, current_uid, getgid());
      system(”/usr/bin/id”);
 ...............................
Pärast saad kasutada juba seda http://www.cprogramming.com/tutorial/lesson5.html

Postitatud: 04.05.2010, 12:48
Postitas olavsu1
töötas, jutumärgid olid valed.

Postitatud: 04.05.2010, 16:28
Postitas andreas
http://www.opengroup.org/onlinepubs/007 ... roups.html

Kood: Vali kõik

#include <unistd.h>
#define GRUPPE 50
#define SEE 1000
#define SEDA 1
#define TOO 1001
#define TODA 2

gid_t grupid[GRUPPE];
int teha;

getgroups(GRUPPE, grupid);

for(int i=0; i < GRUPPE; i++)
{
   if(grupid[i] == SEE)
     teha = SEDA;
   else if (grupid[i] == TOO)
     teha = TODA;
}

if (teha == SEDA)
{
  // Tee SEDA
}
if (teha == TODA)
{
 // Tee TODA
}
Hoiatus: Koodi ei ole testitud. Kasutada ülima ettevaatlikusega.

Postitatud: 04.05.2010, 18:28
Postitas olavsu1
andreas kirjutas:http://www.opengroup.org/onlinepubs/007 ... roups.html

Kood: Vali kõik

#include <unistd.h>
#define GRUPPE 50
#define SEE 1000
#define SEDA 1
#define TOO 1001
#define TODA 2

gid_t grupid[GRUPPE];
int teha;

getgroups(GRUPPE, grupid);

for(int i=0; i < GRUPPE; i++)
{
   if(grupid[i] == SEE)
     teha = SEDA;
   else if (grupid[i] == TOO)
     teha = TODA;
}

if (teha == SEDA)
{
  // Tee SEDA
}
if (teha == TODA)
{
 // Tee TODA
}
Hoiatus: Koodi ei ole testitud. Kasutada ülima ettevaatlikusega.

tänud, töötas tõesti poolikult. ei tehtud mõlemat operatsiooni kui kasutaja kuulus mõlemasse gruppi.

täiendus:

Kood: Vali kõik

#include <unistd.h>
#define GRUPPE 50
#define SEE 1001
#define SEDA 1
#define TOO 1002
#define TODA 2   

gid_t grupid[GRUPPE];
int teha, toda;

getgroups(GRUPPE, grupid);

for(int i=0; i < GRUPPE; i++)
{
   if(grupid[i] == SEE){
     teha = SEDA;
   }
   if (grupid[i] == TOO){	
     toda = TODA;
   }
}

if (teha == SEDA)
{
 cout << "Test 1" << endl; // Tee SEDA
    //system("/usr/bin/id");
}
if (toda == TODA)
{
 cout << "Test 2" << endl;// Tee TODA
    //system("/usr/bin/id");
}
if (teha != SEDA && toda != TODA){
    cout << "Ei ole õigusi!" << endl;
    //system("/usr/bin/id");
}
}

Postitatud: 07.05.2010, 19:21
Postitas -ordi-
olavsu1 kirjutas:
andreas kirjutas:http://www.opengroup.org/onlinepubs/007 ... roups.html

Kood: Vali kõik

#include <unistd.h>
#define GRUPPE 50
#define SEE 1000
#define SEDA 1
#define TOO 1001
#define TODA 2

gid_t grupid[GRUPPE];
int teha;

getgroups(GRUPPE, grupid);

for(int i=0; i < GRUPPE; i++)
{
   if(grupid[i] == SEE)
     teha = SEDA;
   else if (grupid[i] == TOO)
     teha = TODA;
}

if (teha == SEDA)
{
  // Tee SEDA
}
if (teha == TODA)
{
 // Tee TODA
}
Hoiatus: Koodi ei ole testitud. Kasutada ülima ettevaatlikusega.

tänud, töötas tõesti poolikult. ei tehtud mõlemat operatsiooni kui kasutaja kuulus mõlemasse gruppi.

täiendus:

Kood: Vali kõik

#include <unistd.h>
#define GRUPPE 50
#define SEE 1001
#define SEDA 1
#define TOO 1002
#define TODA 2   

gid_t grupid[GRUPPE];
int teha, toda;

getgroups(GRUPPE, grupid);

for(int i=0; i < GRUPPE; i++)
{
   if(grupid[i] == SEE){
     teha = SEDA;
   }
   if (grupid[i] == TOO){	
     toda = TODA;
   }
}

if (teha == SEDA)
{
 cout << "Test 1" << endl; // Tee SEDA
    //system("/usr/bin/id");
}
if (toda == TODA)
{
 cout << "Test 2" << endl;// Tee TODA
    //system("/usr/bin/id");
}
if (teha != SEDA && toda != TODA){
    cout << "Ei ole õigusi!" << endl;
    //system("/usr/bin/id");
}
}
A'la sellist väga õudsat koodi ei ole mõtet kirjutada (#define 1 0).

Postitatud: 07.05.2010, 23:14
Postitas olavsu1
milles seisneb õudus?

Postitatud: 07.05.2010, 23:23
Postitas -ordi-
olavsu1 kirjutas:milles seisneb õudus?
Ma ei näe erilist põhjust kirjutada nii:

#define A 50

See selline mõtetu virin minu poolt ...

Postitatud: 08.05.2010, 10:58
Postitas andreas
Miks A?