#3 Oll-in
spellhower@centrum.cz
Příspěvky odeslané z IP adresy 85.70.207.–
#1 George5
No ve windows forms neni čisté C++ ale C++/CLI, což je nastavba kvůli .NET, takže googlit C++/CLI najdeš spoustu anglických knížek,ale možná stojí za zvážení programovat v C# ve windows forms.Ale pokud chceš v čístem C++ dělat GUI doporučuji QT, mužeš to naistalovat do visualka, máš tam taky designer.
Zdravim nevim jestli to patri sem nebo do SQL, ale delam zaverecny projekt do skoly ve frameworku Qcubed v eclipsu, a vytvoril jsem si databasi v MS SQL managment studiu, a nejde mi se na ni pripojit.Selze to pri pokusu o pripojeni k databasi.V phpMyAdmin jsem se na databasi pripojil v pohode, rek bych ze mi neco hodne duleziteho unika, protoze jsem v tomhle docela novaček
Děkuji za odpovedi
#1 Dejv
Uz se totu resilo, kdyby si skusil hledat
Zdravím jde nějak implementovat "operator[][]" v c++. Nasel jsem jenom operator[], hodilo by se mi to pro muj projekt, implementoval jsem nějake operace s matice, cisla zadavam do jednorozmerneho pole ve tříde Matrix.
Bylo by to dobre kdyby šlo něco jako:
Matrix tmp(velikost)
tmp[0][0] = 1.0
Jednotlive souradnice bych uz prevedl na jednu souradnice prave v tom operatoru :-), Ale neco mi rika ze to asi nepujde :-)
Diky za odpovědi
#1 Hanule
Tak prvni velka chyba je to pole Darku :-)
1. No ted nvm jiste ale myslim ze C nedovoluje tuhle deklaraci pole s pismenkama Darek pole[i][j], melo by to hlasit nejake warningy takže musiš tam dat čisla.
2. velikost pole(sice nvm proc je dvourozmerny, myslim ze by stacilo jednorozmerne) je 0 což spadne, bud ho vytvoris staticky neco jako Darek pole[50], nebo dynamicky, podle velikosti jakou potřebuješ.
3. asi neviš jak fungujou struktury, ale nemuzes do struktury Darek pole, kopirovat znaky to nejde, ale to by tě na to mělo upozornit prostředi :-).Musiš načitat informace zvlašt do každe promene ve strukture Darek, takže něco jako
strcpy(pole[0].nazev,"neco");
pole[0].cena = 5;
atd
Celkove je program nejaky divny, jako bys ho z nekama okopcil :-)
#1 P0k3r_P14y3r
Zacani treba tak, ze si to delas na papire tu gausovu eliminaci, a zjistis ze tvuj kod se bude odvijet od toho :-), gausovu eliminaci jsem delal a postipoval jsem stejne, napred jak se to dela na papire a pak jsem to implementoval programově
#1 constantine
Tohle to jsem taky resil a nepovedlo se mi to :-), nakonec jsem to vyresil tak ze jsem realocoval pouze jednorozmerne pole a to jsem potom prevedl na matici :-), ono vlastne muzes i jednorozmerne pole pouzit i jako matici akorat davat bacha na indexovani.
Uvidime co odpovi ostatni treba to jde :-)
#2 Gaba
Tak tady je ukaza v C++ nerikam ze je to nejlepsi reseni :-)
#include <iostream> using namespace std;
#include <iostream> using namespace std; bool IgnoreCaseCompare(const string& str1, const string& str2) { if (str1.size() != str2.size()) { return false; } for (string::const_iterator c1 = str1.begin(), c2 = str2.begin(); c1 != str1.end(); ++c1, ++c2) { if (tolower(*c1) != tolower(*c2)) { return false; } } return true; } int main() { string slova[3] = {"","",""}; char r = '\0'; int i = 0; cout << "Zadej slova\n"; while(1) { r = cin.get(); if(r == ' ') { while(r == ' ') r = cin.get(); i++; } if( r == '\n' || r == -1 || i > 2) break; slova[i].push_back(r); } if(i != 2) cout << "Spatny pocet slov" << endl; else { cout << "Slovo1 a Slovo2 " << ((IgnoreCaseCompare(slova[0],slova[1])) ? "jsou": "nejsou") << " stejna" << endl; cout << "Slovo1 a Slovo3 " << ((IgnoreCaseCompare(slova[0],slova[2])) ? "jsou": "nejsou") << " stejna" << endl; cout << "Slovo2 a Slovo3 " << ((IgnoreCaseCompare(slova[1],slova[2])) ? "jsou": "nejsou") << " stejna" << endl; cout << "Pocet znaku ve slove1 je " << slova[0].size()<<endl; cout << "Pocet znaku ve slove2 je " << slova[1].size()<<endl; cout << "Pocet znaku ve slove3 je " << slova[2].size()<<endl; } return 0; }
EDIT: nevsim sem si ze to ma byt ignore Case
#12 KIIV
ten postup dela kompilator ne? ja akorat zmacknu kompilace :-)
#13 vitamin
hm, ja jak mam projekt, tak tam mam main.cpp a pak ty (3 zdrojove soubory a 3 hlavickove)-> to jsem si vytvoril ja, takze chyba je ta ze linker kompliluje vsechny ty zdrojove soubory, proto tam vznika ta kolize s tou promenou text je to tak?
#6 KIIV
To te moc nechapu :-)
Ja proste potrebuju tohle:
// hlavicka1.h
void funkce();
extern char *text;
// zdroj1.cpp
char *text = "funkce1"
void funkce()
{
//telo funkce
}
// hlavicka2.h
void funkce();
extern char *text;
// zdroj2.cpp
char *text = "funkce2"
void funkce()
{
//telo funkce
}
// hlavicka3.h
void funkce();
extern char *text;
// zdroj3.cpp
char *text = "funkce3"
void funkce()
{
//telo funkce
}
// main.cpp
#include "hlavicka1.h"
int main()
{
printf("Ted bezi %s",text);
}
Ale to deklarovani te promene text takhle nefunguje, ale zajimave je ze funkce mu nevadi ze jsou pojmenovane stejne
Zdravim, resim takovou vec mam tri hlavickove soubory a tri zdrojove, v kazde bych chtel mit jednu promenou treba text
1 . hlavickovy soubor + 1.zdrojovy soubor
text = "neco 1"
2 . hlavickovy soubor + 2.zdrojovy soubor
text = "neco 2"
3 . hlavickovy soubor + 3.zdrojovy soubor
text = "neco 3"
Jde mi o to kdyz deklaruji hlavickovy soubor abych vypsal promenou text a nemusel psat text1,text2,text3 ale nedari se mi to prekladac mi furt pise chyby, Nevite jakym zpusobem by to slo zrealizovat?Pracuji v c, v c++ pomoci trid by to slo hned :-)
Dekuji za odpovedi
Zdravím ted jsem si instaloval Wxwidgets, chvilku to sice trvalo :-) protoze to neslo ze zacatku prelozit, ted se to buildne bez chyb, ale kdyz to chci spusti, tak to napise program prestal pracovat.Myslím si ze budou asi chybet nekde dll ale nevim to jiste mate s tím nekdo zkusenost? Operacni system vista, IDE codebloks,
Diky za odpovedi
#1 martin
http://books.google.cz/books?id=tSCR_4LH2KsC&printsec=frontcover&dq=C%2B%2B+GUI+Programming+with+Qt+4&source=bl&ots=E60-lT08Cf&sig=PnVRx-WuvIS_kSSZEPxCT9Vywaw&hl=cs&ei=Z2KeTKuTMoLEswal0qnmDg&sa=X&oi=book_result&ct=result&resnum=1&ved=0CB8Q6AEwAA#v=onepage&q&f=false
Skus tuhle knihu ted ji ctu a taky se ucim Qt, je tam vse pekne popsane sice anglicky ale aspon si aj procvicim angličtinu.Tak snad ti to pomuže
Zdravím poprosil bych o pomoc nejak jsem se zaseknul v tomto problemu. Dělám si sudoku řešitel
a mam problem s tímhle tohle:
for(unsigned long int i = 0; i < PocetMoznosti;i++) {
for(UI j = 0; j < PocetBitu;j++) // neco
Poradi[i] = Moznosti; }
Oba dva jsou ve tride SUDOKU a typy jsou
std::vector<tMoznosti> Moznosti;
std::vector<std::vector<tMoznosti> > Poradi
a když pak přistupuji tak me to pise ze tam Moznosti nejsou v Poradi:
for(UI i = 0; i < Moznosti.size();i++)
{
if(Poradi[IndexPoradi].Moznosti[i].Obsazeni == true)
*(Poradi[IndexPoradi].Moznosti[i].Policka[0][0]) = Poradi[IndexPoradi].Moznosti[i].cislo;
else *(Poradi[IndexPoradi].Moznosti[i].Policka[0][1]) = Poradi[IndexPoradi].Moznosti[i].cislo;
}
Jak teda ve vectoru Poradi pristupovat k vektoru strukture tMoznosti
děkuji za odpovědi
P.S kdyby nestačili informace doplnim
Zdravim chci se pres prazdniny naucit Javu, umim C/C++ a na internete jsemi zamluvaji tyhle knizky:
Myslíme v jazyku Java - knihovna programátora
Java 6 vyukový kurz
Ktera je podle vaší zkušenosti lepší popř nějaké jiné navrhy knížek
Děkuji moc za odpovědi
#17 cibule
EDIT
btw Ja mam jenom zakladni znalosti OS pridelovani pameti tak možna nemam pravdu jenom rad programuju, ale mam zkušenost si že zapis mimo vyhrazenou pamet i když se povede je pak problem hlavne u dynamicke alokace pri naslednem uvolnovanim pameti
#10 TheOndrap
Ale to je neco jineho, to už máš pamět přidelenou, neco jako tohle:
int p[5];
p[6] = 6;
kdyz system prideluje pamet pro promene tak to prideluje po blocich a vzdycky jsou tam nevyužite zbytky
Ale ja jsem mel spis namysli že čiste si do pointeru das rucne adresu a to se netrefis
EDIT: ale tým fseek je to asi lepsi
#16 ceckar
No ja bych rek ze principialne to mame skoro stejne, kodove to ma tvuj kamos o hodne horší zhlediska vlastnosti za behu programu,plus neosetruje vyjimky jako když soubor se nepodari otevrit(btw tvojemu kamosovi to bude fungovat spatne protože nevynuloval promenou number)
Tvuj kamos ma platidla ulozena v poli castky na pevno v kodu, v mem programu si to zadavas za behu programu hned, na zacatku, takže ty si tam zadas tohle -> {5000,2000,1000,500,200,100,50,20,5,2,1}; pote si zadaš cestu k souboru kde jsou uložene častky ktere se potřebujou vyplatit a ty se potom zpracuji a to už je potom na vystupě
,dale on nacte vsechny castky ze souboru a secte je, muj program nacte jednu castku ze souboru a tu zpracuje a pote dalsi, osobne si myslim ze je to lepsi po jednom nacitat než soušet všech častek v souboru, co když je tam 523 a 127 když to sečte je to 650 takže k tomu nepotřebuješ koruny ale co kdyby potřeboval vyplatit 523 a 127, na to už potřebuješ koruny.
Nvm jestli si pochopil spravne zadani ale v zadani je:
1. "hodnoty jednotlivých platidel by mělo být možno jednoduchým způsobem změnit (tzn.
definovat v nějaké struktuře, např. v poli na začátku programu) – max. 20 platidel"
=> to měniš hned na zacatku v mem programu
2."jednotlivé částky budou zadány ve vstupním souboru tak, že na každé řádce bude jedna
hodnota. Celkový počet částek nebude explicitně zadán, konec načítání je nutno ošetřit"
=> cestu k souboru zadavas hned potom co zadavas ty platidla
3."výsledkem výpočtu bude dvojrozměrné pole o 2 řádcích a n sloupcích (n je počet
platných platidel): v prvním řádku budou uvedeny jednotlivé hodnoty platidel, ve druhém
jejich počet.toto pole převeďte srozumitelným způsobem jednak do výstupního souboru, jednak na
obrazovku"
=> což se provede po zpracovani a souboru a pote co si zadas v mem programu nazev souboru pro vystup
BTW v nadpise v prispevku mas v c++ tak jsem to tak delal, tvuj kamos to delal C, je to jedno nebo to musi byt ciste v C? ale v dev-c++ je to zkompilovane
Edit:
mensi korecke tak preupload:
http://www.sendspace.com/file/hesy7h
#19 cheki
No ja nvm, ja umim C protože jsem se to musel učit kvuli škole,ale zas diki tomu jsem lehce zvadl c++,myslím že když umíš C tak máš lehčí přechod na vyší jazyk, aníž by ses musel učit vše od začatku, ale nvm umím jen C a C++ a pravě ted se chci učit javu a C#, tak uvidím jestli se to vyplatilo učit :-)
#17 cheki
Aha ono je to v c++ :-) ten program s tým souborem, když tak to prepisu ale ted ne ted se učím na zkoušku, jinak C od pavla herouta je dobra knižka, ale ja osobne jsem učil z knižky "Nauč se sam C" od Herberta Shilda mrte dobra knižka ma kolem 600 stran, ale ji asi už neseženeš, možná v knihovně, každopádně i herout stačí no
#15 cheki
jj v tom druhem priklade nepracujes jenom s se sudymi kladnymi
a tady je k tomu ukolu se souborem ZNAKY.TXT
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
const unsigned int MAXZNAKU = 20;
int main(void)
{
const char * soubor = "Znaky.txt";
ofstream inFile(soubor);
fstream outFile;
char znak = '\0';
int pocet = 0;
/* VYTVORENI SOUBORU S NAHODNYMI ZNAKAMI */
if(!inFile.is_open()) std::cout<<"Soubor: "<<soubor<<" se nepodarilo otevrit"<<std::endl;
else
while(inFile.good())
{
znak =rand() % 126;
inFile.put(znak);
if(pocet >= MAXZNAKU)
{
inFile.put('q');
break;
}
pocet++;
}
inFile.close();
/* OTEVRENI SOUBORU PRO CTENI ZNAKU */
outFile.open(soubor);
if(!outFile.is_open()) cout<<"Soubor: "<<soubor<<" se nepodarilo otevrit"<<endl;
else
do
{
if(outFile.good()) outFile.get(znak);
else break;
if(znak <= '9' && znak >= '0') cout<<"cislo ";
else if(znak >= 'A' && znak <= 'Z') cout<<"velkePismeno ";
else if (znak >= 'a' && znak <= 'z') cout<<"malePismeno ";
else cout<<"jinyZnak ";
}while(znak != 'q');
outFile.close();
return 0;
}
#2 Cibule
Oprava prvniho :
#include <stdio.h>
int main(void)
{
char znak = '\0';
znak = getchar(); //bez osetreni vstupu
printf("Znak '%c' ma cislo v ASCII tabulce -> %d",((znak*1 == znak) ? znak : 0),((znak*0 == znak) ? 0 : znak));
return 0;
}
aby to bylo nazornejsi
#1 cheki
Pochopil jsem to takhle:
1.ukol:
#include <stdio.h>
int main(void)
{
char znak = '\0';
znak = getchar(); //bez osetreni vstupu
printf("Znak '%c' ma cislo v ASCII tabulce -> %d",((znak*1 == znak) ? znak : (int)znak),((znak*0 == znak) ? znak : (int)znak));
return 0;
}
2.ukol:
#include <stdio.h>
char hodnota(char znak)
{
if(znak >= 'A' && znak <= 'Z')return znak;
else return ' ';
}
int main(void)
{
char znak = '\0';
znak = getchar(); //bez osetreni vstupu
printf("%c",hodnota(znak));
return 0;
}
#1 Kajo1354
// Fronta.h
#include <stdlib.h>
// definice datovych typu
struct Prvek
{
unsigned int Zakaznik;
unsigned int PocetTransakci;
};
struct tFronta
{
Prvek polozka;
tFronta *ukDalsi;
};
struct Fronta
{
tFronta *MyFronta;
tFronta *zacatek;
};
void InitFronta(Fronta & tmp)
{
tmp.MyFronta = NULL;
tmp.zacatek = NULL;
}
void InsertF(Fronta & tmpF,Prvek & tmpP)
{
if(tmpF.zacatek != NULL)
{
tmpF.MyFronta->ukDalsi = new tFronta [sizeof(tFronta)];
if(!tmpF.MyFronta->ukDalsi) exit(1);
tmpF.MyFronta->ukDalsi->polozka.Zakaznik = tmpP.Zakaznik;
tmpF.MyFronta->ukDalsi->polozka.PocetTransakci = tmpP.PocetTransakci;
tmpF.MyFronta->ukDalsi->ukDalsi = NULL;
tmpF.MyFronta = tmpF.MyFronta->ukDalsi;
}
else
{
tmpF.MyFronta = new tFronta [sizeof(tFronta)];
if(!tmpF.MyFronta) exit(1);
tmpF.MyFronta->polozka.Zakaznik = tmpP.Zakaznik;
tmpF.MyFronta->polozka.PocetTransakci = tmpP.PocetTransakci;
tmpF.MyFronta->ukDalsi = NULL;
tmpF.zacatek = tmpF.MyFronta;
}
}
bool JePrazdnaFronta(Fronta & tmpF)
{
if(tmpF.zacatek == NULL) return true;
else return false;
}
void OdebraniPrvniPrvek(Fronta & tmpF)
{
if(JePrazdnaFronta(tmpF) != true){
tFronta * tmp = tmpF.zacatek->ukDalsi;
delete tmpF.zacatek;
tmpF.zacatek = tmp;
}
}
tFronta * VratPrvniPrvek(Fronta & tmpF)
{
if(JePrazdnaFronta(tmpF) != true) return tmpF.zacatek;
else return NULL;
}
void UvolneniPameti(Fronta & tmpF)
{
while(tmpF.zacatek!=NULL)
{
tFronta * tmp = tmpF.zacatek;
tmpF.zacatek = tmpF.zacatek->ukDalsi;
delete tmp;
}
}
//main.cpp
#include <iostream>
#include <time.h>
#include <windows.h>
#include "Fronta.h"
using namespace std;
const unsigned int N = 5;
const unsigned int M = 100;
const unsigned int P = 3;
void OdebraniZFronty(Fronta & prepazky,int & TypTransakce)
{
cout<<"O"<<prepazky.zacatek->polozka.Zakaznik<<"[F"<<TypTransakce<<"]"<<endl;
OdebraniPrvniPrvek(prepazky);
}
void zpracovaniJedneTransakce(Fronta & prepazky,int & TypTransakce)
{
tFronta * tmp = VratPrvniPrvek(prepazky);
if(tmp != NULL)
{
tmp->polozka.PocetTransakci--;
cout<<"T"<<tmp->polozka.Zakaznik<<"["<<tmp->polozka.PocetTransakci<<"]"<<endl;
if(tmp->polozka.PocetTransakci == 0) OdebraniZFronty(prepazky,TypTransakce);
}
}
void vlozeniZakaznikaDoFronty(Fronta & prepazky,Prvek & tmp,int & TypTransakce)
{
InsertF(prepazky,tmp);
cout<<"V"<<tmp.Zakaznik<<"[F"<<TypTransakce<<"]"<<endl;
}
void vygenerovaniZakaznika(Fronta * prepazky)
{
Prvek tmp = {0,0};
int TypTransakce = 0;
int PomPolePoradi[N] = {0};
for(unsigned int i = 0; i < M;i++)
{
srand(time(NULL)); Sleep(50); // nastaveni randomu Sleep = zpozdeni
TypTransakce = (rand() % N);
PomPolePoradi[TypTransakce]++;
tmp.Zakaznik = PomPolePoradi[TypTransakce];
tmp.PocetTransakci = ((rand() % P) + 1);
cout<<"G"<<tmp.Zakaznik<<"[F"<<TypTransakce<<"]"<<"["<<tmp.PocetTransakci<<"]"<<endl;
vlozeniZakaznikaDoFronty(prepazky[TypTransakce],tmp,TypTransakce); //vlozeni do jednotlivych front
}
}
int main(void)
{
cout<<"-------------------------------------"<<endl;
cout<<" POSTA OTEVREMA "<<endl;
cout<<"-------------------------------------"<<endl<<endl;
Fronta prepazky[N];
for(unsigned int i = 0; i < N; i++) InitFronta(prepazky[i]); //inicializace jednolivych front
vygenerovaniZakaznika(prepazky); //vygenerovani zakazniku
cout<<"-------------------------------------"<<endl;
cout<<" PREPAZKY OTEVRENY "<<endl;
cout<<"-------------------------------------"<<endl<<endl;
bool ukonceni = false;
int TypTransakce = 0;
while(ukonceni != true) //simulace posty
{
for(unsigned int i = 0; i < N; i++)
if(JePrazdnaFronta(prepazky[i]) == false){ukonceni = false; break;}
else ukonceni = true;
if(ukonceni != true)
{
zpracovaniJedneTransakce(prepazky[TypTransakce],TypTransakce);
TypTransakce++;
TypTransakce %= N;
}
}
for(unsigned int i = 0; i < N; i++) UvolneniPameti(prepazky[i]); //uvolneni pameti
cout<<"--------------------------------------------------------"<<endl;
cout<<" POSTA ZAVRENA A PREPAZKY ZAVRENY PRIDTE ZITRA "<<endl;
cout<<"--------------------------------------------------------"<<endl;
return 0;
}
#1 Johnas
int main()
{
int podil,delenec = 1;
for(int delitel = 2; delitel < 101;delitel++)
{
for(int j = 0; j < 100;j++)
{
podil = delenec/delitel;
cout<<podil;
delenec-=podil*delitel;
if(delenec < delitel) delenec*=10;
if(j==0) cout<<',';
}
cout<<endl;
delenec = 1;
}
return 0;
}