Anonymní profil Robo – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Robo – Programujte.comAnonymní profil Robo – Programujte.com

 

Příspěvky odeslané z IP adresy 178.253.138.–

Robo
C / C++ › 2D pole vo funkcii
17. 11. 2013   #184030

#1 Anonym 

pole[] = *pole			// jednorozmerne	
pole[][] = *pole[] = **pole	// dvojrozmerne
pole[][][] = 2^3 zapisov	// trojrozmerne
Robo
C / C++ › C - proč se mi program zacyk…
17. 11. 2013   #184018

#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

Robo
C / C++ › Kalkulačka
16. 11. 2013   #183999

#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);
Robo
C / C++ › Kalkulačka
16. 11. 2013   #183994

#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

Robo
C / C++ › Kalkulačka
16. 11. 2013   #183986

#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.

Robo
C / C++ › char podminka vstupu
12. 11. 2013   #183793

#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/

Robo
C / C++ › pole ve funkci
12. 11. 2013   #183756

#9 vitamin
Ja viem že má automatické premenné. To statické pole som myslel ako pole so statickou väzbou, ktorá sa alokuje počas prekladu

Robo
C / C++ › pole ve funkci
12. 11. 2013   #183751

#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

Robo
C / C++ › pole ve funkci
12. 11. 2013   #183720

#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;
}
Robo
C / C++ › Bitmap to GIF // Vytvoření G…
12. 11. 2013   #183717

#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š

Robo
C / C++ › Výmena dvoch ukazovateľov
7. 11. 2013   #183508

#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

Robo
C / C++ › Výmena dvoch ukazovateľov
7. 11. 2013   #183501

nejako jebnuto to sem vložilo. Ale šak vyčítaš z toho dačo

Robo
C / C++ › Výmena dvoch ukazovateľov
7. 11. 2013   #183500

#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; }

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý