Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Moderátori: psichac, Moderátori
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Snažil som sa to napísať čo najbližšie k užívateľovi, čiže som to spravil prehľadne ak myslíš toto.. Mysli si čo chceš. Ale jako keď nemáš záujem mi pomôcť, prečo vôbec reaguješ na moju otázku?
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Vidím že nikomu sa nechce lúskať cudzí kód, nie to ešte aby tam niečo vytváral na želanie autora. Ak ešte stojíš o radu tak tu máš niečo z wikipédie:
Všimni si rozdiel medzi tým čo si poslal ty a ako by to malo byť správne.
No a otestovať načítaný text či sa rovná nejakému stringu už nechám na teba. Smer ktorým máš hľadať som ti napísal dávnejšie.
Kód: Vybrať všetko
#include <stdio.h>
int main()
{
char word[20];
if (scanf("%19s", word) == 1)
puts(word);
return 0;
}
No a otestovať načítaný text či sa rovná nejakému stringu už nechám na teba. Smer ktorým máš hľadať som ti napísal dávnejšie.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
To je celkom nápomocné, ale stále nechápem ako to prepojiť s cyklom do-while :/
Takto by to fungovalo?
Kód: Vybrať všetko
include <stdio.h>
int main()
{
char koniec[7] = "koniec";
do {
program....
} while(scanf("%7s",koniec) == 1) {
puts(koniec);
return 0;
}
}
0
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
nepochopil som celkom co to ma presne robit, ale ak chces aby to nieco robilo, az pokial nezadas koniec, a potom sa to ukonci, tak toto by malo fungovat:
btw ten do-while cyklus mas zle
je to takto:
do{
telo cyklu;
}while(podmienka); //za while uz nejdu prikazy ktore sa maju vykonavat!
*ak je to zle, alebo som napisal blbost, opravte ma prosim, tiez sa este len ucim
Kód: Vybrať všetko
#include <stdio.h>
int main()
{
char koniec[7]="koniec";
char prikaz[10];
do{
printf("toto je telo programu");
scanf("%s",&prikaz);
} while (strcmp(koniec,prikaz));
printf("koniec");
return 0;
}
je to takto:
do{
telo cyklu;
}while(podmienka); //za while uz nejdu prikazy ktore sa maju vykonavat!
*ak je to zle, alebo som napisal blbost, opravte ma prosim, tiez sa este len ucim
0
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
char koniec nadefinuj jako const, a pak ho v cmpstr přetypuj.
scanf musí vědět o maximální délce pole, takovýhle program je nebezpečný!
scanf musí vědět o maximální délce pole, takovýhle program je nebezpečný!
0
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Treba dat char koniec[8], aby tam bolo miesto pre 7 znakov a ukoncovaciu nulu. Nacitavanie sa ukonci po siedmich znakoch alebo na prvej medzere.alvar napísal:To je celkom nápomocné, ale stále nechápem ako to prepojiť s cyklom do-while :/Takto by to fungovalo?Kód: Vybrať všetko
include <stdio.h> int main() { char koniec[7] = "koniec"; do { program.... } while(scanf("%7s",koniec) == 1) { puts(koniec); return 0; } }
Ten zvlastny kombinovany cyklus do {} while {} bude treba prepracovat , to necham na inych.
Hinsiho sprostosti o const a pretypovani ignoruj. Patri to do na prve miesto zoznamu "ako pisat zle programy", nehovoriac o tom, ze deklaracia retazca ako const vobec neznamena, ze sa nejaka funkcia dozvie o dlzke pola. V C nikdy a nikde.
0
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
const souvisí s umístěním dat v paměťovém prostoru a s přístupem k těm datům. Ty svý narážky si laskavě strč někam.Hinsiho sprostosti o const a pretypovani ignoruj. Patri to do na prve miesto zoznamu "ako pisat zle programy", nehovoriac o tom, ze deklaracia retazca ako const vobec neznamena, ze sa nejaka funkcia dozvie o dlzke pola. V C nikdy a nikde.
Nebo nám tu veřejně vysvětli, k čemu potřebuješ ten konstantní řetězec jako RW překážející někde v RAM, když stačí v ROM.
Pokud ze mě chceš dělat debila, tak nám ten tvůj nesmysl prečo nie const odůvodni. Pokud nevíš k čemu to je, tak neurážej a študuj! Též nám tu můžeš vysvětlit, co keyword const znamená.
PS: Čtení textu ti zjevně činí potíže, const a délku pole jsem nikde do souvislosti nedával, narozdíl od tebe. Proč myslíš, že každá věta je na samostatném řádku? A kdyby si těch potíží se čtením měl víc, reagoval jsem na člena lubbo7.
0
-
- Nový člen
- Príspevky: 73
- Dátum registrácie: 14 Feb 2010, 00:00
- Bydlisko: NR
- Vek: 39
- Kontaktovať používateľa:
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Nikto nikde nepovedal, ze to kompiluje pre nejaky mpu... Pisal, o prikazovom riadku, je zaciatocnik, takze predpokladaj konzolovu aplikaciu a neuvazuj o umiestneni v ROM Ja by som to tiez dal ako const a potom porovnal cez strcmp, je to bezne pouzivany postup, pokial nie si odchovany na jave alebo c# Len to tvoje odovodnenie neplati pre tento pripad.const souvisí s umístěním dat v paměťovém prostoru a s přístupem k těm datům. Kdybys programoval něco jinýho než nějaký šmudlačiny, tak bys to věděl, takže si laskavě ty svý narážky strč někam.
Nebo nám tu veřejně vysvětli, k čemu potřebuješ ten konstantní řetězec jako RW překážející někde v RAM, když stačí v ROM.
0
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
No dobre, prehliadol som prispevok od lubbo7, reagoval som primarne na iny, ale aj tak pleties piate cez deviate.
Neviem preco sem pleties umiestnenie premennych v takej alebo onakej pamati. O to tu nejde - pochybujem, ze by sa zadana uloha tykala programovania MCU. Verejne vysvetlenie: v priklade bola premenna pouzita vo funkcii scanf, a v ziadnom strcmp (pardon, ty vlastne hovoris o cmpstr), z toho som vychadzal.
Okrem toho, ak by ho zadefinoval ako const, naco by ho pretypovaval, ked strcmp ma obidva vstupne parametre definovane ako const? Mas aj na to nejake genialne vysvetlenie?
Debila robis zo seba sam. Neser sa do veci, ktorym nerozumies. Programujem 36 rokov - to je skoro dvakrat tolko, ako si na svete. Takze rady o studovani od niekoho, kto pred 5-timi rokmi na forach vyplakaval aky je ten AVR assembler tazky (dam link, aby si zasa mal co premazavat?) su trapne, trapne a trapne.
Neviem preco sem pleties umiestnenie premennych v takej alebo onakej pamati. O to tu nejde - pochybujem, ze by sa zadana uloha tykala programovania MCU. Verejne vysvetlenie: v priklade bola premenna pouzita vo funkcii scanf, a v ziadnom strcmp (pardon, ty vlastne hovoris o cmpstr), z toho som vychadzal.
Okrem toho, ak by ho zadefinoval ako const, naco by ho pretypovaval, ked strcmp ma obidva vstupne parametre definovane ako const? Mas aj na to nejake genialne vysvetlenie?
Kód: Vybrať všetko
int strcmp(const char *s1, const char *s2);
Ak si to teda nemyslel tak, ze sa scanf dozvie dlzkou pola z toho const, atk ako si to myslel? Odkial sa to vlastne dozvie? Ja nemam problem s citanim, evidentne mas problem sformulovat myslienku, pokial v nej nie je kazde druhe slovo urazka.char koniec nadefinuj jako const, a pak ho v cmpstr přetypuj.
scanf musí vědět o maximální délce pole, takovýhle program je nebezpečný!
Debila robis zo seba sam. Neser sa do veci, ktorym nerozumies. Programujem 36 rokov - to je skoro dvakrat tolko, ako si na svete. Takze rady o studovani od niekoho, kto pred 5-timi rokmi na forach vyplakaval aky je ten AVR assembler tazky (dam link, aby si zasa mal co premazavat?) su trapne, trapne a trapne.
0
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Takže na tom const vlastně nic špatného není, dokonce je to správně a žádané. Na x86 to nevadí, jen to učiní program bezpečnějším, na embedded je to vyžadované. Jinak řečeno chyba tam není, takže co si těma narážkama dokazuješ?
Dýlka načítanýho stringu je ve formátovacím řetězci scanf, takový starý pardál, co měří zkušenosti na věk (jak směšné a pošetilé), by to měl vědět.
Nevymlouvej se, že jsi něco přehlédl, ten lubbovo příspěvek tu byl odvčera. Stejně tak jsou trapné ty tvé výmluvy, že jsi něco přehlídl. Trapné, trapné a trapné.
Dýlka načítanýho stringu je ve formátovacím řetězci scanf, takový starý pardál, co měří zkušenosti na věk (jak směšné a pošetilé), by to měl vědět.
Nevymlouvej se, že jsi něco přehlédl, ten lubbovo příspěvek tu byl odvčera. Stejně tak jsou trapné ty tvé výmluvy, že jsi něco přehlídl. Trapné, trapné a trapné.
0
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Takže keď som toto napísal, program mi síce ukončilo, ale predtým mi vypísalo tabuľku program prestal pracovať... Prečo mi to vyskakuje? Tu je zjednodušená verzia:
Kód: Vybrať všetko
#include <stdio.h>
int main()
{
char koniec[8]; // aj keď som napísal char koniec[8] = "koniec"; nešlo to...
int volba;
do {
// program s výberovým menu, pričom volba je typu int, čiže len číslicou...
} while (volba != strcmp(koniec));
}
0
- Drakoush
- Ultimate člen
- Príspevky: 10964
- Dátum registrácie: 07 Feb 2012, 23:22
- Bydlisko: Nitra
- Vek: 28
- Kontaktovať používateľa:
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Vo vlákne boli dva nahlásené príspevky, no vzhľadom na ich obsah ich ponechávam vo vlákne. Previnilého budeme riešiť na "porade" vedenia fóra. V prípade, ak k tomu nahlasovateľ chce niečo dodať, prosím, aby sa obrátil bud na mňa, alebo niektorého z modov, alebo priamo na administrátora fóra. Za pochopenie ďakujem. Drakoush, 14.10.2014
0
Odkupujem zaujímavé meracie prístroje. Ponuky mailom alebo SS.
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
No dobre, ja som reagoval na iny prispevok ako ty. Prehliadol som ho pri skrolovani dlhej obrazovky. Nevyhovaram sa, uz nie som 21-rocne decko, nepotrebujem to. Dobre, moja chyba.Hinsi napísal:Takže na tom const vlastně nic špatného není, dokonce je to správně a žádané. Na x86 to nevadí, jen to učiní program bezpečnějším, na embedded je to vyžadované. Jinak řečeno chyba tam není, takže co si těma narážkama dokazuješ?
Dýlka načítanýho stringu je ve formátovacím řetězci scanf, takový starý pardál, co měří zkušenosti na věk (jak směšné a pošetilé), by to měl vědět.
Nevymlouvej se, že jsi něco přehlédl, ten lubbovo příspěvek tu byl odvčera. Stejně tak jsou trapné ty tvé výmluvy, že jsi něco přehlídl. Trapné, trapné a trapné.
Ale keby tvoje prispevky mali hlavu a patu a bolo z nich jasne coho sa tykaju, k nedorozumeniu by nedoslo. Fakt je tazke odhadnut, ktory prispevok prave urazas.
A v com chces merat skusenosti? V pocte urazok? Ci sa ti to paci Sixta, alebo nie, 36 rokov programovania je viac, ako 5 rokov smodrchania na nejakom AVR. Proste si nanic programator - to krici z kazdeho tvojho prispevku na temu programovania.
Ale to je jedno - je zrejme, ze moderatori si zelaju dat foru tvoju hnusnu tvar... a pre niektorych si zrejme aj vzorom.
@Drakoush: Ako nahlasovatelovi prispevkov (jeden Hinsiho a jeden moj vlastny), je mi uplne sumafuk co sa s nimi urobi.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Toto sa bude týkať zdrojového kódu ktorý si poslal naposledy.
Nože prezraď v akom prostredí to programuješ? A ten zjednodušený program si testoval. Podľa mňa by ho mal slušný kompilátor neskompilovať. Je vidno že textové reťazce sú pre teba španielska dedina. Nuž čo nejak s nimi treba začať.
Skús si veľmi pozorne prečítať toto:
http://www.jakprogramovat.cz/kurz-c/9-k ... e-s-textem
Možno sa ti z toho podarí niečo pochopiť. Aj keď ten scanf tam majú tiež zle, lebo nešpecifikujú max dĺžku reťazca. Už som ti k tomu posielal návod ale asi to tu zapadlo v informačnom šume.
Potom sa pokús opraviť ten tvoj zjednodušený program aby dokázal otestovať dva textové reťazce
V skratke chyby ktoré tam máš.
1. strcmp má dva parametre a nie jeden - toto musí viesť k chybe prekladu
2. porovnanie voľba != strcmp( ..., ...) síce nevygeneruje chybu ale znamená to úplne niečo iné než s ty predstavuješ. Konkrétne to znamená test: Hodnota ktorá je v premennej volba nerovná sa hodnote ktorú vrátila funkcia strcmp.
3. pole koniec musí byť inicializované nejakým reťazcom. Ak hľadáš dôvod na nejaké abnormálne ukončenie programu tak ho hľadaj práve tu.
Nože prezraď v akom prostredí to programuješ? A ten zjednodušený program si testoval. Podľa mňa by ho mal slušný kompilátor neskompilovať. Je vidno že textové reťazce sú pre teba španielska dedina. Nuž čo nejak s nimi treba začať.
Skús si veľmi pozorne prečítať toto:
http://www.jakprogramovat.cz/kurz-c/9-k ... e-s-textem
Možno sa ti z toho podarí niečo pochopiť. Aj keď ten scanf tam majú tiež zle, lebo nešpecifikujú max dĺžku reťazca. Už som ti k tomu posielal návod ale asi to tu zapadlo v informačnom šume.
Potom sa pokús opraviť ten tvoj zjednodušený program aby dokázal otestovať dva textové reťazce
V skratke chyby ktoré tam máš.
1. strcmp má dva parametre a nie jeden - toto musí viesť k chybe prekladu
2. porovnanie voľba != strcmp( ..., ...) síce nevygeneruje chybu ale znamená to úplne niečo iné než s ty predstavuješ. Konkrétne to znamená test: Hodnota ktorá je v premennej volba nerovná sa hodnote ktorú vrátila funkcia strcmp.
3. pole koniec musí byť inicializované nejakým reťazcom. Ak hľadáš dôvod na nejaké abnormálne ukončenie programu tak ho hľadaj práve tu.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
- 25majo40
- Stály člen
- Príspevky: 106
- Dátum registrácie: 22 Jún 2013, 12:45
- Bydlisko: Takmer Prešov
- Vek: 26
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Caute nechcem zakladat novu temu tak to pisem tu, chcem sa spytat ci by niekto nevedel naprogramovat alebo aspon pomoct mi s programom v C-cku.
Program by mal nacitat neaky sled pismen a zoradit ich podla abecedy , ale neviem ako na to , nenasiel by sa niekto co ma s tym neake skusenosti ?
tak by som chcel,aby to neako fungovalo
Vstup:
daczt
Vystup:
acdtz
Program by mal nacitat neaky sled pismen a zoradit ich podla abecedy , ale neviem ako na to , nenasiel by sa niekto co ma s tym neake skusenosti ?
tak by som chcel,aby to neako fungovalo
Vstup:
daczt
Vystup:
acdtz
0
Elektronika is my love
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
určite vedel. Ale nikto to za teba robiť nebude. Daj si do googla
c sort char array
Pozri si čo sa týka tvojho problému, vyskúšaj a potom sa pýtaj čo nebudeš vedieť.
c sort char array
Pozri si čo sa týka tvojho problému, vyskúšaj a potom sa pýtaj čo nebudeš vedieť.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
- 25majo40
- Stály člen
- Príspevky: 106
- Dátum registrácie: 22 Jún 2013, 12:45
- Bydlisko: Takmer Prešov
- Vek: 26
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Vdaka petrple
nasiel som to co som hladal, ale velmi tomu nechapem nevysvetlil by mi to niekto ?
chapem maximalne tomu, ze je tu napisana funkcia pre vratenie hodnoty a, program zoradi ake kolvek tri pismena , ale co ak by som chcel ten pocet pismen zvacsit , aby bolo jedno kolko znakov slovo obsahuje ?
nasiel som to co som hladal, ale velmi tomu nechapem nevysvetlil by mi to niekto ?
chapem maximalne tomu, ze je tu napisana funkcia pre vratenie hodnoty a, program zoradi ake kolvek tri pismena , ale co ak by som chcel ten pocet pismen zvacsit , aby bolo jedno kolko znakov slovo obsahuje ?
Kód: Vybrať všetko
#include <stdio.h>
#include <stdlib.h>
int ascending(void const *a, void const *b )
{
return (*(char*)a - *(char*)b );
}
int main()
{
char a[] = "FED";
qsort(a, 3, sizeof(char), ascending);
printf("%s\n", a);
return 0;
}
0
Elektronika is my love
-
- Nový člen
- Príspevky: 73
- Dátum registrácie: 14 Feb 2010, 00:00
- Bydlisko: NR
- Vek: 39
- Kontaktovať používateľa:
Re: Reťazcový vstup pre užívateľa, (od)mocniny v C - Ako na to?
Do tej funcie qsort davas vstupne parametre - buffer, pocet elementov, velkost elementu, callback funkcia na porovnanie... cize do pola "a" nacitas hoc aj z prik. riadku (vid vyssie) a ako pocet elementov pouzijes funckiu strlen(). Podrobnejsie to pisat nebudem, nic by si sa nenaucil Treba sa skamaratit s googlom a hladat, hladat...
0
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 10 Odpovedí
- 500 Zobrazení
-
Posledný príspevok od používateľa cool-zool
-
- 0 Odpovedí
- 2131 Zobrazení
-
Posledný príspevok od používateľa lato
-
- 17 Odpovedí
- 2720 Zobrazení
-
Posledný príspevok od používateľa kapor
-
- 13 Odpovedí
- 2331 Zobrazení
-
Posledný príspevok od používateľa hal_sk
-
- 6 Odpovedí
- 1384 Zobrazení
-
Posledný príspevok od používateľa milan209