#1 Anonym
pole[] = *pole // jednorozmerne
pole[][] = *pole[] = **pole // dvojrozmerne
pole[][][] = 2^3 zapisov // trojrozmerne
#1 Martin
Ja len takú malú vychytávku :)
to že tam zadávaš 99999999999999999, tak to asi znamená, že to chceš porovnať s najväčším možným číslom (alebo s nejakým, ktoré vieš že nedosiahneš). Tak nato sa zvykne využívať INT_MAX (definovaný v limits.h), ktorý ti vráti najväčšie možné číslo ktoré vieš uložiť do premennej typu int
#7 Anakin
To aby ti to nevypisovalo 5.00 ale len 5, tak to sa asi príkazom spraviť nedá. Jedine že by si to dal do if a keď by to bolo celé číslo tak by si to vypísal ako %.lf a keď nie, tak by si to normálne vypísal %lf
(%.lf ti vypíše čísla pred desatinnou bodkou)
A aby ti to písalo čísla namiesto tvojich slov tak ich musíš dať jednoducho do printf
printf("%lf + %lf = %lf",num1, num2, num1+num2);
#5 Anakin
To nevadilo že si to mal v .cpp. Ja len že názov operator sa používa v projektoch .cpp, čiže ty si musíš dať iný názov.
A k tvojmu problému. Nieje dobré načítavať veci hneď po sebe. A ešte k tomu, ty keď to zadávaš bez medzery, že zadáš 5,6+4,0 tak program neviem čo je prvé číslo a čo je druhé. Buď sa to odeluje medzerou 5 + 6 alebo podľa mňa je najlepšie s enterom.
scanf("%lf", &num1);
getchar();
op = getchar();
scanf("%lf", &num2);
načítaš do num1 prvé číslo a dáš enter. Ten enter ti stále trčí v bufferi, tak použiješ getchar() aby si ho načítal naprázdno (tým ho stadial odstrániš) . operátor nemusíš načítavať cez scanf, kedže sa jedná len o jeden znak. S num 2 je to podobné, ale v tomto prípade už nemusíš použiť getchar(), lebo tvoj program už nič ďaľšie nenačítava
#1 Anakin
no typujem že projekt vytváraš v .cpp a nie .c, keďže tam máš operátor. Keď ti vývojové prostredie vysvieti nejakú tvoju premennú, tak to znamená, že je to vyhradený operátor pre ten programovací jazyk
Takže si zmeň svoju premennú operátor.
Ďalšia vec je tá , že máš za switch bodkočiarku, čiže ti to nevstúpi do tela toho switchu.
#1 Jarda
Teraz neviem či nepoznáš knižnicu ctype.h alebo ju poznáš a len ju nechceš použiť.
Je jasné, že ti stále vypíše čo tam zadáš. Vytvoril si si znakovú premennú. A ty nech zadáš čokolvek, tak je to znak. Aj napríklad nejaké číslo môže byť chápané ako číselná hodnota alebo aj ako znaková hodnota.
Takže skús to ctype.h
http://www.cplusplus.com/…ence/cctype/
#5 Kenvelo
Pýtal si sa, prečo ti nefunguje tvoj kód. Tak som ti odpísal, lebo takto vytváraš statické pole štruktúr. Viem, že si mal v pláne vytvoriť dynamické pole a keď si sa ty pozrel na môj kód, tak si si tam musel všimnúť že ho vytváram dynamicky
Box1 *p = new Box1[sett];
stačí ti tam pozmeniť tento riadok
#1 Kenvelo
Jasné že to musí byť konštantné. Šak to sú základy programovania. Keď si vytváraš statické pole tak veľkosť toho pola musí byť už dopredu známa
#2 z
Tebe by to tiež nefungovalo. Robíš tú istú chybu. A ešte ktomu nemusíš odstraňovať každý prvok s delete.
Daj to len raz na celé pole štruktúr a je hotovo
void SadBox(){
struct Box1{
char name[20];
int years;
double value;
};
char *temp[] = {"Robo", "Peto", "Filip", "Majo"};
int sett;
cin >> sett;
Box1 *p = new Box1[sett];
for(int i = 0; i < sett; i++){
strcpy(p[i].name, temp[i]);
p[i].years = i + 25;
p[i].value = i + 56.6;
}
for(int i = 0; i < sett; i++){
cout << p[i].name << ", " << p[i].years << ", " << p[i].value << endl;
}
delete [] p;
}
#1 Xephn
No ja na takéto veci používam OpenCV. Neviem či je tam aj na niečo takéto funkcia, ale dalo by sa to spraviť aj tak, že si tie obrázky upravíš na rovnakú veľkosť, spočítaš dokopy riadky a stĺpce (záleží, ako chceš mať tie obrázky uložené), vytvoríš si prázdnu bit mapu takej veľkosti a už len po pixeli kopíruješ
#5 Kent
Nevidím preto využitie, kedže ukazovateľ na ukazovateľ sa používa pre dynamické matice. A Aj tak v tej funkcii pracuješ len s obyčajným ukazovateľom. A to čo chceš ty sa ani nedá spraviť. Lebo aj keď by si si vytvoril dva samostatne ukazovatele a poprepájal ich, tak stále to bude ukazovať len na tú premennú a a bude to obyčajný ukazovateľ. Keď ty z niečoho spravíš **p1 tak je to defakto matica
nejako jebnuto to sem vložilo. Ale šak vyčítaš z toho dačo
#1 Kent
No po prvé, ti máš vo funkcii ukazovateľ na ukazovateľ a nie obyčajný ukazovateľ.
Ďalšia vec je tá, že vo funkcii prijímaš ukazovateľ na void ale posielaš tam adresu typu int.
A je zbytočné vytvárať ďalší ukazovateľ na a, kedže tvoj program to nepotrebuje. Do funckie môžeš rovno poslať adresu premennej a.
Takže zmeň funkciu na
void vymen(int *p1, int *p2)
{
int pom;
pom = *p1;
*p1 = *p2;
*p2 = pom;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
vymen(&a,&b);
getchar();
return 0;
}