Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 31 ] Choď na stránku: 1, 2 ďalšia
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok NapísalOffline : 25.12.2008 14:05

zdravím...
mám nasledovný problém :
Kód:
#include <stdio.h>
#include <stdlib.h>

main()
{
 char c;
 
 printf("Zadajte pozadovany prikaz...\n");
 scanf("%s", &c);

if(c == 'tv'){
   printf("Prikaz spracovany...\nZapinam Televiziu...\n");
 }
 else
   printf("Neznamy prikaz...\n");
 
 system("PAUSE");   
  return 1;
      }

...ide o to, že tento program nedokáže priradiť "c" hodnotu "tv" a ja neviem ako ho k tomu mám donútiť...mohli by ste mi pomôcť?..
ešte chcem dodať, že ak v riadku "if(c == 'tv'){" zmením "'tv'" napr. na "'t'" tak to funguje...


Offline

Skúsený užívateľ
Skúsený užívateľ
C problem s priradenim viac ako jedneho znaku

Registrovaný: 19.03.07
Prihlásený: 14.04.24
Príspevky: 7076
Témy: 85
Bydlisko: BA
Príspevok NapísalOffline : 25.12.2008 15:05

Ja som sa c ucil davno, cize si to uz nepamatam, ale mas c zadefinovane ako char, skus radsej char c[2] a potom

if (c[1] == 't' && c[2]=='v') {...

len teraz neviem kolko rozlicnych jazykov som splietol dohromady. Kazdopadne mas najskor zle zadefinovanu premenu.







_________________
Desktop: CPU AMD R7 1700x @ 3.85GHz | Cooling be quiet! Dark Rock Pro 4 | MB ASRock X470 Taichi Ult. | RAM 4x8GB DDR4 G-SKILL TridentZ RGB 3000 CL16-16-16-36 | VGA Powercolor VEGA56 + Raijintek Morpheus II | SSD Crucial MX300 525GB | HDD Seagate Ironwolf 3TB 5900rpm | PSU CORSAIR RM750X | MONITOR AOC Q3279VWFD8 | MOUSE HyperX Pulsefire FPS + Razer eXactMat | HyperX Alloy FPS Brown | HyperX Cloud | ARCH x64 &
Notebook: DELL inspiron 7537 i7 4500U, 16GB RAM, nv750, FHD IPS,Crucial M4 128GB | ARCH x64 & Surface Go 8/128 &
Mobil: LG v40 ThinQ (2018) & SBC: Raspberry pi 0 | 3B+ & Headphones: Senheiser HD58X | AKG K551 + detachable cable mod | Linsoul TIN T2 | KZ SZN
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok Napísal autor témyOffline : 25.12.2008 15:11

okey. vyriešil som to :)
Kód:
main()
{
 char c, d;
 
 printf("Zadajte pozadovany prikaz...\n");
 scanf("%c%c", &c, &d);

if(c == 't' && d == 'v'){
   printf("Prikaz spracovany...\nZapinam Televiziu...\n");
 }
 else
   printf("Neznamy prikaz...\n");
 
 system("PAUSE");   
  return 1;
      }

no čo ak by som chcel aby napr. čítal aj "príkaz" "Television" ?..


Offline

Správca fóra
Správca fóra
C problem s priradenim viac ako jedneho znaku

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 25.12.2008 15:22

a nieco ako char c[2] neexistuje? :) a nasledne pouzijes scanf("%s", c);







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok Napísal autor témyOffline : 25.12.2008 15:36

tak ak som to napísal takto
Kód:
main()
{
 char c[2];
 
 printf("Zadajte pozadovany prikaz...\n");
 scanf("%s", c);

if(c[1] == 't', 'T' && c[2] == 'v', 'V'){
   printf("Prikaz spracovany...\nZapinam Televiziu...\n");

 }
 else
   printf("Neznamy prikaz...\n");
   
 
 system("PAUSE");   
  return(1);
      }

tak nech tam už napíšem čokoľvek vždy mi vráti TRUE tj. "prikaz spracovany..." a tak ako som to písal vyššie to funguje...lenže zas neviem ako ho mám prinútiť čítať celé slová...každé písmeno zvlášť?..musí to ísť aj jednoduchšie


Offline

Užívateľ
Užívateľ
C problem s priradenim viac ako jedneho znaku

Registrovaný: 23.11.08
Príspevky: 187
Témy: 34
Bydlisko: IP: 209.85....
Príspevok NapísalOffline : 25.12.2008 16:08

nech sa paci:
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
  char c[3], prikaz[3] = "tv";

  printf("Zadajte pozadovany prikaz...\n");
  scanf("%s", &c);

  if (strcmp(c,prikaz) == 0){
    printf("Prikaz spracovany...\nZapinam Televiziu...\n");
  }
  else printf("Neznamy prikaz...\n");


  system("PAUSE");
  return 0;
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok Napísal autor témyOffline : 25.12.2008 16:19

ďakujem. Ak smiem položím ešte niekoľko otázok. (Som začiatočník, neviem či som to už spomínal) Ako mu teraz zadefinujem aby čítal aj "TV" a čo určujú (alebo skôr čo robia?) "[]" za premennou (nejak som zistil, že určujú počet znakov, ktoré chceme priradiť premennej...neviem či to tak je) ? A ešte som sa chcel spýtať ... existuje nejaký príkaz na spustenie iného programu, alebo otvorenie nejakého súboru? (napr. "RUN C://program files/SPOLOCNOST/PROGRAM.exe", alebo nieco podobne...nemyslim "fopen"...ja nechcem do toho programu/súboru zapisovať, len ho spustiť...) Neviem možno už chcem veľa, tak odpovedajte len ak máte čas. Ďakujem za odpoveď :-)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 25.12.2008 19:16

Mal by si pochopit rozdiel medzi znakom a retazcom.
char c; je znak (premenna typu char)
char c[3]; je retazec dlzky 3 (pole troch prvkov typu char)
Na spustenie programu by mohlo fungovat system(), avsak ta funckia spusta iba predinstalovane programy (aspon sa mi zda), napr. system("calc.exe"); ti spusti kalkulacku. :)

void: len trosku poopravim, v C zacina pole od 0. prvku :)

Logik: vo funkcii scanf("%s", &c) by pred argumentom c nemal byt referencny operatot(&), kedze c je v podstate pointer, ktoreho hodnotou je adresa. Zaujimave vsak je, ze program funguje aj tak. :-) Ale nemalo by to tam byt... :rolleyes:


Naposledy upravil neutronmind dňa 25.12.2008 19:26, celkovo upravené 1

Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok Napísal autor témyOffline : 25.12.2008 19:22

neutronmind píše:
Mal by si pochopit rozdiel medzi znakom a retazcom.
char c; je znak (premenna typu char)
char c[3]; je retazec dlzky 3 (pole troch prvkov typu char)
Na spustenie programu by mohlo fungovat system(), avsak ta funckia spusta iba predinstalovane programy (aspon sa mi zda), napr. system("calc.exe"); ti spusti kalkulacku. :)

Vďaka. Takže to ale nespustí neskôr inštalované programi. A nejaký príkaz, ktorí by spustil aj také? Skúšal som už aj google ale veľa mi tentoraz nepovedal. Pýtal som sa aj jedného programátora, no ten mi povedal, že to z hlavy nevie, ale potom sa tým už nezaoberal :roll:







_________________
..."dobrá nálada nevyrieši všetky tvoje problémy, ale naserie toľko ľudí, že stojí zato si ju udržať"...
..."Čo môžeš urobiť dnes, nerob ani zajtra a budeš mať dva dni voľna"...
..."Blbý pocit zomiera posledný!"...
..."V najlepšom treba začať"...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 25.12.2008 19:31

Malo by fungovat
Kód:
system("cesta_k_suboru");

napr. nieco ako
Kód:
system("C:\\Programy\\Opera\\opera.exe");

btw. posledny prispevok v teme sa necituje. :)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok Napísal autor témyOffline : 25.12.2008 20:02

ou...vyzerá to tak, že po "system(" zadávaš príkaz priamo pre "cmd.exe", čiže príkazový riadok. To znamená, že by to malo byť "system("prikaz pre spustenie programu pre cmd_cesta\\k\\suboru.exe")"...lenže v "cmd.exe" má príkaz "start" obmedzený dosah na 10 znakov...tj. ak mu zadám cestu "start C:\Program Files" vypíše hlášku "windows nemuze nalezt C:\Program (čo je 10 znakov)"...ale napr. "start C:\" otvorí...fakt netuším ako by sa to dalo spraviť. Ide o to, že ten program by mal po napísaní Vami zadaného prikázu (napr. "Tv") spustiť nejaký program, alebo otvoriť súbor (v tomto prípade telku s cestou "C:\Program Files\SUPERTELKA\TELKA.EXE")
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
  char c[3], prikaz[3] = "tv";

  printf("Zadajte pozadovany prikaz...\n");
  scanf("%s", &c);

  if (strcmp(c,prikaz) == 0){
    printf("Prikaz spracovany...\nZapinam Televiziu...\n");
    system("start C:\\");
  }
  else printf("Neznamy prikaz...\n");


  system("PAUSE");
  return 0;
}

jj...a ešte. Ako by sa dalo spraviť aby čítal nielen "tv", ale napr. aj "TV" alebo "Telka", "telka" a pod. ?







_________________
..."dobrá nálada nevyrieši všetky tvoje problémy, ale naserie toľko ľudí, že stojí zato si ju udržať"...
..."Čo môžeš urobiť dnes, nerob ani zajtra a budeš mať dva dni voľna"...
..."Blbý pocit zomiera posledný!"...
..."V najlepšom treba začať"...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 25.12.2008 23:07

Takymto sposobom
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
  char c[3], prikaz[3][20] = {"tv", "telka", "televizia"};
  int i;

  printf("Zadajte pozadovany prikaz...\n");
  scanf("%s", &c);
  for (i=0; i<3; i++) {
  if (strcmp(c,prikaz[i]) == 0){
    printf("Prikaz spracovany...\nZapinam Televiziu...\n");
    system("start C:\\");
  }
  }


  system("PAUSE");
  return 0;
}

Ja by som na to vytvoril zvlast strukturu, do ktorej by som ukladal vsetky mozne sposoby, ktorymi sa da "spusti" (napr. "tv", "telka" ... atd.) a takisto cestu k programu, ktory sa mas spustit. :)
Zajtra sa ti na to este pozriem. :rolleyes:


Offline

Skúsený užívateľ
Skúsený užívateľ
C problem s priradenim viac ako jedneho znaku

Registrovaný: 19.03.07
Prihlásený: 14.04.24
Príspevky: 7076
Témy: 85
Bydlisko: BA
Príspevok NapísalOffline : 25.12.2008 23:44

len tak... uplne z haluze, preco to nerobis cez case? myslim ze by to bolo jednoduchsie.







_________________
Desktop: CPU AMD R7 1700x @ 3.85GHz | Cooling be quiet! Dark Rock Pro 4 | MB ASRock X470 Taichi Ult. | RAM 4x8GB DDR4 G-SKILL TridentZ RGB 3000 CL16-16-16-36 | VGA Powercolor VEGA56 + Raijintek Morpheus II | SSD Crucial MX300 525GB | HDD Seagate Ironwolf 3TB 5900rpm | PSU CORSAIR RM750X | MONITOR AOC Q3279VWFD8 | MOUSE HyperX Pulsefire FPS + Razer eXactMat | HyperX Alloy FPS Brown | HyperX Cloud | ARCH x64 &
Notebook: DELL inspiron 7537 i7 4500U, 16GB RAM, nv750, FHD IPS,Crucial M4 128GB | ARCH x64 & Surface Go 8/128 &
Mobil: LG v40 ThinQ (2018) & SBC: Raspberry pi 0 | 3B+ & Headphones: Senheiser HD58X | AKG K551 + detachable cable mod | Linsoul TIN T2 | KZ SZN
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok Napísal autor témyOffline : 26.12.2008 8:36

neutronmind píše:
Ja by som na to vytvoril zvlast strukturu, do ktorej by som ukladal vsetky mozne sposoby, ktorymi sa da "spusti" (napr. "tv", "telka" ... atd.) a takisto cestu k programu, ktory sa mas spustit. :)
Zajtra sa ti na to este pozriem. :rolleyes:

nnj presne tak som to aj myslel. Spraviť si jednu "default" štruktúru, a potom vlastne len meniť informácie (miesto určenia, forma príkazu a pod.), len ešte potom treba zistiť ako sa spúšťajú ostatné programy/súbory. Ale každopádne už aj tak veľmi ďakujem všetkým za ochotu, a dúfam, že to pomôže aj iným. Keby sa mi náhodou raz podarilo dokončiť ten program, tak veľmi rád podám zdrojáky (veď sú v podst. odtiaľto :D ).







_________________
..."dobrá nálada nevyrieši všetky tvoje problémy, ale naserie toľko ľudí, že stojí zato si ju udržať"...
..."Čo môžeš urobiť dnes, nerob ani zajtra a budeš mať dva dni voľna"...
..."Blbý pocit zomiera posledný!"...
..."V najlepšom treba začať"...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 26.12.2008 12:24

Ta struktura by mohla vyzerat napr. nejak takto:
Kód:
typedef struct program{
        char **prikazy;
        int pocet_prikazov;
        char *cesta_k_programu;
}PROGRAM;

Zistil som uz, ako spustat tie programy. Ak je nazov prilis dlhy, tak ho skrat zober len 6 prvych znakov a pridaj tam ~ a nejake poradove cislo(asi ked sa v zadanej ceste nachadza viacero suborov, ktore zacinaju na tych 6 pismen). :-)
napr. na spustenie Opery
Kód:
system("start C:\\PROGRA~1\\Opera\\opera.exe");

alebo Documents and Settings
Kód:
system("start C:\\DOCUME~1");


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok Napísal autor témyOffline : 26.12.2008 14:34

to spúšťanie funguje :) , ale s tou štruktúrou si neviem poradiť...asi nechápem ako to funguje...nemohol by si spraviť nejaký príkladový program ako by to malo vyzerať, ako sa konkrétne používa tá štruktúra ?







_________________
..."dobrá nálada nevyrieši všetky tvoje problémy, ale naserie toľko ľudí, že stojí zato si ju udržať"...
..."Čo môžeš urobiť dnes, nerob ani zajtra a budeš mať dva dni voľna"...
..."Blbý pocit zomiera posledný!"...
..."V najlepšom treba začať"...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 26.12.2008 17:52

No tam bude trochu problem, kedze prvky struktur sa nedaju incializovat pri deklaracii. Takze asi len budes musiet postupne priradovat vsetko potrebne tym prvkom...
Kód:
PROGRAM telka;
telka.prikazy=(char **)malloc(telka.pocet_prikazov*sizeof(char *));
telka.prikazy[0]="telka";
telka.prikazy[1]="televizia";

/*... atd */
telka.cesta_k_programu="C:\\...";

Budes to proste musiet takto postupne zadavat... :loony:







_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok Napísal autor témyOffline : 26.12.2008 18:23

jj s tým priraďovaním nemám problém :) ...to je v pohode. Len neviem ako má vyzerať potom ten program. Ak tam je štruktúra.
Kód:
#include <stdio.h>
#include <stdlib.h>

typedef struct program{
        char **prikaz;
        int pocet_prikazov;
        char *cesta_k_programu;
}PROGRAM;

main()
{
    PROGRAM telka;
    printf("Zadajte pozadovany prikaz...\n");

      if(telka.prikaz=(char **)malloc(telka.pocet_prikazov*sizeof(char *)));
        telka.prikaz[0]="telka";
        telka.prikaz[1]="televizia";
        telka.prikaz[2]="tv";
        telka.cesta_k_programu=system("start C:\\Progra~1\\Lifevi~1\\");
     {
      printf("Prikaz spracovany...\nZapinam Televiziu...\n");
     }
     else
       printf("Neznamy prikaz...\n");
       
 system("PAUSE");   
  return 1;
      }

niečo také som splodil, ale nefunguje to :(







_________________
..."dobrá nálada nevyrieši všetky tvoje problémy, ale naserie toľko ľudí, že stojí zato si ju udržať"...
..."Čo môžeš urobiť dnes, nerob ani zajtra a budeš mať dva dni voľna"...
..."Blbý pocit zomiera posledný!"...
..."V najlepšom treba začať"...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 26.12.2008 18:55

Ty ten priklad nikde nenacitavas. ;) Ale jedna vec bude problem. Napr. ked budes mat viacej prikazov(napr. "telka", "tv", "pocitac", "mobil"), tak budes musiet nacitat jeden prikaz a porovnavat zo vsetkymi, co moze byt dost casovo zlozite. Preto by si tam mal pouzit nejaky rychly vyhladavaci algoritmus. ;)







_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.12.08
Prihlásený: 12.01.09
Príspevky: 78
Témy: 0
Príspevok NapísalOffline : 28.12.2008 17:17

...jednoduche riesenie... :rolleyes:

Citácia:
static char* prikazy=";tv;telka;televizia";
c[0]=';';
printf("Zadajte pozadovany prikaz...\n");
scanf("%s",&c[1]);
if(strstr(prikazy,c)>0) system("start C:/");


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 28.12.2008 18:58

No da sa aj tak:). Aj ked toto c[0]=';'; tam netreba. ;)







_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.12.08
Prihlásený: 12.01.09
Príspevky: 78
Témy: 0
Príspevok NapísalOffline : 28.12.2008 22:21

...treba lebo ak by uzivatel zadal "tv" a mal by si prikazy magictv;telka;televizia tak by ti to naslo vyznacenu zhodu ale to je nespravny prikaz... :D


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 28.12.2008 23:44

Aha, tak v takomto pripade hej, mas pravdu. :D







_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
C problem s priradenim viac ako jedneho znaku

Registrovaný: 23.11.08
Príspevky: 187
Témy: 34
Bydlisko: IP: 209.85....
Príspevok NapísalOffline : 03.01.2009 23:13

neutronmind píše:
Zistil som uz, ako spustat tie programy. Ak je nazov prilis dlhy, tak ho skrat zober len 6 prvych znakov a pridaj tam ~ a nejake poradove cislo(asi ked sa v zadanej ceste nachadza viacero suborov, ktore zacinaju na tych 6 pismen). :-)
napr. na spustenie Opery
Kód:
system("start C:\\PROGRA~1\\Opera\\opera.exe");

alebo Documents and Settings
Kód:
system("start C:\\DOCUME~1");


Zapnutie nejakeho programu funguje, ale ako spravim vypnutie programu? ...napriklad opery, cez stop ani halt ani break to nejde.







_________________
Tajna misia: Ignorovat dlzne a makcene.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.12.08
Prihlásený: 12.01.09
Príspevky: 78
Témy: 0
Príspevok NapísalOffline : 10.01.2009 16:26

...operu ale iny program takto jednoducho nevypnes cez prikazovy riadok lebo ked si ju spustil tak uz bezi vo vlastnom threade...to znamena mas moznosti:
1. killnut thread tym sa ti vsak program ukonci rovnako ako ked likvidujes zamrznuty program =>bez ulozenych zmien
2. poslat to theadu alebo okna tej aplikacie signal na ukoncenie...napriklad WM_CLOSE(tym vlastne simulujes kliknutie na X v rohu okna) => ukoncenie je rovnake ako keby to spravil uzivatel takze by malo byt korektne...

...a XYZ dalsich sposobov... :rolleyes:


Offline

Užívateľ
Užívateľ
C problem s priradenim viac ako jedneho znaku

Registrovaný: 08.03.09
Prihlásený: 06.10.20
Príspevky: 1116
Témy: 88
Bydlisko: 00100100
Príspevok NapísalOffline : 08.03.2009 11:05

tiez sa ucim C dajte tram retazce s podmienkov je ci sa to zhoduje







_________________
Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-)
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok Napísal autor témyOffline : 30.03.2009 20:47

tak po dlhšom odmlčaní sa...mám funkčný program...má svoje nedostatky, ale tie sú skôr odrazom mojich "skúseností"...tu je program...
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main() {
  char c[25];
 
    static char* prikaz1=";tv;telka;TV;Tv;televizor;televizia";
    static char* prikaz2=";music;hudba;Hudba;Music";
    static char* prikaz3=";exit;off;out";
    static char* prikaz4=";c";
    static char* prikaz5=";Dokumenty;dokumenty;doc";
    static char* prikaz6=";Mozzila;mozzila;mozilla;Mozilla;Mozzilla;mozzilla;Firefox;firefox;FireFox";
    static char* prikaz7=";total comander;Total Comander;Total comander;totalcmd";
    static char* prikaz8=";icq;Icq;ICQ";
 
    c[0]=';';
    printf("Zadajte prikaz...\n");
  detector:
    scanf("%s",&c[1]);
    printf("Spracuvam informacie...\n");
 
    if(strstr(prikaz1,c)>0) system("start C:/Progra~1/LifeVi~1/TVR.exe")&printf("Prikaz spracovany...\nZapinam Televiziu...\nTelevizia zapnuta...\n");
    if(strstr(prikaz2,c)>0) system("start E:/Hudba/MyPlay~1/poc.wpl")&printf("Prikaz spracovany...\nZapinam Vasu hudbu...\nUzite si svoju hudbu...\n");
    if(strstr(prikaz3,c)>0) printf("Dovidenia...\nPrajem prijemny zvysok dna...\n")&system("PAUSE")&system("start exit");
    if(strstr(prikaz4,c)>0) system("start C:/");
    if(strstr(prikaz5,c)>0) system("start C:/Docume~1/Laco/Dokume~1/Paszty")&printf("Prikaz spracovany...\nOtvaram Vase dokumenty...\nVase dokumenty boli otvorene...\n");
    if(strstr(prikaz6,c)>0) system("start C:/Progra~1/Mozill~1/firefox.exe")&printf("Prikaz spracovany...\nZapinam Mozilla FireFox...\nPrajem prijemne surfovanie...\n");
    if(strstr(prikaz7,c)>0) system("start C:/Progra~1/totalcmd/TOTALCMD.EXE")&printf("Prikaz spracovany...\nZapinam TotalCommander\n");
    if(strstr(prikaz8,c)>0) system("start C:/Progra~1/+Chat+/Icq/ICQ6.5/ICQ.exe")&printf("Prikaz spracovany...\nZapinam Icq 6.5...\nPrajem prijemne chatovanie...\n");
   
    system("PAUSE");
    printf("...\nMozete zadat dalsi prikaz...\n");
  goto detector;
}

...k tým nedostatkom...neviem napr. ako ho mám prinútiť aby po zadaní iného ako známeho príkazu vyhodil hlášku napr. "Neznamy prikaz...\n" ap. ...aby písal stále do prvého riadku a text šiel postupne na dol...alebo napr. aby nebol v príkazovom riadku ale text šiel len na ploche a v neaktívnom stave zjemnil farbu...vedeli by ste mi pomôcť aj s týmto?..
...ďakujem za všetko čo ste mi sem už popísali...dosť mi to pomohlo :)







_________________
..."dobrá nálada nevyrieši všetky tvoje problémy, ale naserie toľko ľudí, že stojí zato si ju udržať"...
..."Čo môžeš urobiť dnes, nerob ani zajtra a budeš mať dva dni voľna"...
..."Blbý pocit zomiera posledný!"...
..."V najlepšom treba začať"...
Offline

Skúsený užívateľ
Skúsený užívateľ
C problem s priradenim viac ako jedneho znaku

Registrovaný: 11.01.09
Prihlásený: 18.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 30.03.2009 21:05

Ak chceš, aby po zadaní iného ako známeho príkazu vyhodilo hlášku, tak miesto if použi switch a do default daj vypísanie tej hlášky. A aby text bol na ploche, tak takéto niečo asi v konzolovej aplikácii nepôjde.

// nemáš akosi ošetrené ukončnie - iba to vypíše text :)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.12.08
Prihlásený: 05.04.09
Príspevky: 12
Témy: 1
Príspevok Napísal autor témyOffline : 30.03.2009 21:30

to switch default mi nejak nevydalo...vymenil som len if za switch u všetkých príkazov...na koniec každého switchu som dal break...a potom na koniec switchov som dal default...a break...ale nejak to nefungovalo...inak sa to riešiť nedá?..a o tom exite tiež viem a neviem riešiť :roll: ...a ako by sa dalo riešiť to písanie priamo na plochu?..alebo aby to tak vyzeralo...







_________________
..."dobrá nálada nevyrieši všetky tvoje problémy, ale naserie toľko ľudí, že stojí zato si ju udržať"...
..."Čo môžeš urobiť dnes, nerob ani zajtra a budeš mať dva dni voľna"...
..."Blbý pocit zomiera posledný!"...
..."V najlepšom treba začať"...
Offline

Skúsený užívateľ
Skúsený užívateľ
C problem s priradenim viac ako jedneho znaku

Registrovaný: 11.01.09
Prihlásený: 18.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 30.03.2009 21:39

A vlastne sorry, napísal som ti zbytočne komplikované prerobenie :) Jednoducho za všetky if-y pridaj printf s tvojou chybovou správou. Ešte raz sorry, som si neuvedomil.

Ukončenie:

Kód:
if(strstr(prikaz3,c)>0)
{
    printf("Dovidenia...\nPrajem prijemny zvysok na...\n")&system("PAUSE")&system("start exit");
    getchar();
    return 0;
}


Písanie na plochu:

Priamo na plochu sa (myslím) písať nedá, ale dala by sa využiť vlastnosť transparent - priehľadnosť formulárov. Jedna farba sa stanoví ako priehľadná a teda ostane vidieť iba text, ktorý napíšeš. Neviem, možno existuje aj iné riešenie.


Odpovedať na tému [ Príspevkov: 31 ] Choď na stránku: 1, 2 ďalšia


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Ako spojiť viac verzií windows do jedného bootovacieho dvd?

v Operačné systémy Microsoft

4

572

30.10.2009 15:10

Googler1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zakazanie zobrazovania jedneho znaku

v PHP, ASP

5

620

10.11.2009 16:53

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. excel - vymazanie jedného znaku...

v Ostatné programy

1

592

16.03.2011 16:23

jojom Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zbalenie viac suborov do jedneho

v Ostatné programy

5

478

24.11.2007 18:21

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. daju sa zlucit 2 a viac dopytov do jedneho?

v PHP, ASP

15

762

04.09.2008 21:39

zero0x Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém s kopírovaním viac ako 4GB

v Operačné systémy Microsoft

7

905

20.08.2011 12:29

M@x.sK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [VYRIESENE] Problem s ulozenim znaku ENTER

v PHP, ASP

2

408

06.02.2009 21:35

evTOM Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako spojit dva disky do jedneho ?

v Pevné disky a radiče

18

6287

27.07.2008 8:09

chorche Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako spojit 2 avi.subory do jedneho

v Video programy

4

1417

23.07.2010 15:59

dodo111 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Teplota jedneho jadra je vyššia ako zbytku procesora

v Intel - Integrated Electronics

8

566

12.12.2010 11:57

P€PoX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. HD4870 , ako nastavit viac ako povoluje...

v Grafické karty

1

632

20.10.2008 9:03

Xaltotun Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Aká je životnosť jedného PC systému? Dlhá ak viete ako...

v Články

3

1818

30.08.2008 10:37

Mir Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako preniest najlahsie z jedneho NB net na druhy.. cez wifi

v Siete

3

752

20.10.2009 20:21

Jaro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako na viac domen?

v Ostatné

0

342

13.05.2014 13:11

mio Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako nastavit viac HZ

v nVidia grafické karty

17

1706

02.12.2010 6:44

LEXXX525 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. NB hučí viac ako PC.

v Notebooky a netbooky

1

630

15.10.2009 19:12

ScorpionSX Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra