Fórum Ubuntu CZ/SK

Ostatní => Otevřená diskuze kolem Linuxu a OSS => Téma založeno: fester-182 03 Března 2008, 18:21:16

Název: Jazyk C [vyřešeno]
Přispěvatel: fester-182 03 Března 2008, 18:21:16
Zdravas ....

V skole sme zacali pisat v Cecku tak  reku doma skusim v linuxe  napisal som to v txt ulozil v fester01.c pustil konzolu nasiel cestu kde mam fester01.c a napisal gcc fester01.c a napisalo mi taketo nieco :
Kód: [Vybrat]
fester-182@fester-182-desktop:~/fester-182$ gcc fester01.c
fester01.c: In function ‘main’:
fester01.c:7: error: expected expression before ‘%’ token
fester01.c:8: error: expected expression before ‘%’ token
fester01.c:9: error: stray ‘\302’ in program
fester01.c:9: error: stray ‘\240’ in program
fester01.c:9: error: stray ‘\302’ in program
fester01.c:9: error: stray ‘\240’ in program
fester01.c:9: error: stray ‘\302’ in program
fester01.c:9: error: stray ‘\240’ in program
fester01.c:9: error: stray ‘\302’ in program
fester01.c:9: error: stray ‘\240’ in program
fester01.c:13: error: stray ‘\302’ in program
fester01.c:13: error: stray ‘\240’ in program
fester01.c:13: error: stray ‘\302’ in program
fester01.c:13: error: stray ‘\240’ in program
fester01.c:13: error: stray ‘\302’ in program
fester01.c:13: error: stray ‘\240’ in program
fester01.c:13: error: stray ‘\302’ in program
fester01.c:13: error: stray ‘\240’ in program
fester01.c:14: error: expected ‘;’ before ‘{’ token
fester01.c:17: error: stray ‘\302’ in program
fester01.c:17: error: stray ‘\240’ in program
fester01.c:17: error: stray ‘\302’ in program
fester01.c:17: error: stray ‘\240’ in program
fester01.c:17: error: stray ‘\302’ in program
fester01.c:17: error: stray ‘\240’ in program
fester01.c:17: error: stray ‘\302’ in program
fester01.c:17: error: stray ‘\240’ in program


vo widlach to ide v poriadku . je to iba primitivny priklad. prosim vas mohli by ste poradit co tam je vlastne zle ?

kod :
Kód: [Vybrat]
#include<stdio.h>


int main()
{
    int a,b;
    scanf("%d", %a);
    scanf("%d", %b);
    if(a > b)
    {
        printf("a je vacsie");
    }
    elseif(a < b)
    {
        printf("b je vacsie");
    }
    else
    {
        printf("a=b");
    }
    getch();
}
Název: Re: Jazyk C
Přispěvatel: Pavel Půlpán 03 Března 2008, 18:36:56
Řádek 7 a 8: U proměnné má být znak &. ;)
Název: Re: Jazyk C
Přispěvatel: fester-182 03 Března 2008, 18:46:29
vdaka opisal som zly kod. ale aj po pridani premennej  mi napise

Kód: [Vybrat]
fester-182@fester-182-desktop:~/fester-182$ gcc fester01.c
fester01.c: In function ‘main’:
fester01.c:9: error: stray ‘\302’ in program
fester01.c:9: error: stray ‘\240’ in program
fester01.c:9: error: stray ‘\302’ in program
fester01.c:9: error: stray ‘\240’ in program
fester01.c:9: error: stray ‘\302’ in program
fester01.c:9: error: stray ‘\240’ in program
fester01.c:9: error: stray ‘\302’ in program
fester01.c:9: error: stray ‘\240’ in program
fester01.c:13: error: stray ‘\302’ in program
fester01.c:13: error: stray ‘\240’ in program
fester01.c:13: error: stray ‘\302’ in program
fester01.c:13: error: stray ‘\240’ in program
fester01.c:13: error: stray ‘\302’ in program
fester01.c:13: error: stray ‘\240’ in program
fester01.c:13: error: stray ‘\302’ in program
fester01.c:13: error: stray ‘\240’ in program
fester01.c:14: error: expected ‘;’ before ‘{’ token
fester01.c:17: error: stray ‘\302’ in program
fester01.c:17: error: stray ‘\240’ in program
fester01.c:17: error: stray ‘\302’ in program
fester01.c:17: error: stray ‘\240’ in program
fester01.c:17: error: stray ‘\302’ in program
fester01.c:17: error: stray ‘\240’ in program
fester01.c:17: error: stray ‘\302’ in program
fester01.c:17: error: stray ‘\240’ in program

Název: Re: Jazyk C
Přispěvatel: Pavel Půlpán 03 Března 2008, 18:58:16
Další chyba: Klíčové slovo elseif neexistuje. Musí být samostatně else if! Navíc funkce getch není standardní knihovní funkcí, tak jsem použil getchar().

Opravený a odzkoušený kód:
Kód: [Vybrat]
#include <stdio.h>

int main()
{
  int a, b;

  printf("\nZadej A = ");
  scanf("%d", &a);
  printf("Zadej B = ");
  scanf("%d", &b);

  if (a > b) {
    printf("A je vetsi...\n\n");
  }
  else if (a < b) {
    printf("B je vetsi...\n\n");
  }
  else {
    printf("A i B jsou si rovny...\n\n");
  }

  getchar();

  return 0;
}
Název: Re: Jazyk C
Přispěvatel: fester-182 03 Března 2008, 19:00:59
velmi pekne ti dakujem . zase som o kustek mudrejsi.
Název: Re: Jazyk C
Přispěvatel: Pavel Půlpán 03 Března 2008, 19:03:42
Ještě ti přiložím velmi pěkný seriál o C/C++ ... http://www.linuxsoft.cz/article.php?id_article=370
Název: Re: Jazyk C
Přispěvatel: fester-182 03 Března 2008, 19:04:56
vdaka este raz.
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: shaman 03 Března 2008, 20:05:39
Tyhle chyby (stray \302 ...) ti to vypisuje, protože tam máš nějaké znaky, které gcc nemá rádo. Mě se to stává, pokud třeba omylem napíšu mezeru se stisknutým pravým altem. Pak to na příslušném řádku hlásí dvě chyby za každou takovou mezeru.
Kód: [Vybrat]
hello.c:11: error: stray ‘\302’ in program
hello.c:11: error: stray ‘\240’ in program
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: fester-182 03 Března 2008, 20:08:21
vdaka.
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: fester-182 03 Března 2008, 20:09:51
a aky je tam rozdiel ?
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: shaman 03 Března 2008, 20:14:45
Já ani vlastně nevím. Jednou to hlásí chyby a nezkompiluje se to, podruhé to proběhne bez problémů. Ale proč se to tak chová fakt netuším.
Název: Re: Jazyk C
Přispěvatel: wam]Spider007 03 Března 2008, 20:19:51
Řádek 7 a 8: U proměnné má být znak &. ;)

okrem toho na konci chybalo return, kedze funkcia main vracia hodnotu int.
je mozne v niektorych kompilatoroch zadavat main aj bez navratovej hodnoty, ale nezvykal by som si na to.

EDIT: a niesom si isty, ci pri pouziti getch() nie je potrebne pouzit inu kniznicu ako stdio.h
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: fester-182 03 Března 2008, 20:34:09
ja sa to este len ucim  mal som iba zapisane to co sme pisali v skole ...  ale dufam ze casom  budem vediet viac ak budem makat.
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: Pavel Půlpán 03 Března 2008, 20:55:17
Prototyp funkce getch() je definován v hlavičkovém souboru conio.h, který není součástí standardu jazyka C... nedávno jsem o tom přesvědčoval profesora na vejšce, kterej se divil, že na mým notebooku prostě conio.h není. ;D
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: fester-182 03 Března 2008, 21:00:36
teraz  budem aj ja  ak sa na vysku dostanem :D
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: jiri-j 03 Března 2008, 21:01:17
jinak takový dotaz, k čemu je vlastně ta funkce  getch(), co přesně dělá?
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: Pavel Půlpán 03 Března 2008, 21:07:59
Fce getchar() oproti getch() čeká na vstupu na stisk klávesy Enter. Je to ještě podmíněno nastavením vstupu/výstupu, někdy se chovají obě funkce stejně.
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: fester-182 03 Března 2008, 21:09:39
takze getch zname lubovolna klavesa a getchar enter ?
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: Pavel Půlpán 03 Března 2008, 21:13:01
Zjednodušeně řečeno: S použitím fce getchar() program čte znak a pozastaví se až do stisknutí klávesy Enter. Fce getch() oproti tomu čeká pouze na znak.
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: wam]Spider007 03 Března 2008, 21:24:35
pouziva sa hlavne vo switchi (vetveni programu) ak mas trebars nejake menu, aby uzivatel nemusel zadat "a" a Enter, ale zada len "a" pre pokracovanie v danej vetve. je to moc sikovne.
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: Marvn 04 Března 2008, 19:32:10
iostream  8)
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: Firzen 04 Března 2008, 19:34:18
Citace
iostream
moje řeč ;) jsme holt zmlsaný no  :)
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: wam]Spider007 04 Března 2008, 20:05:48
iostream  8)

no iostream nie je vzdy liek na secko :D
Název: Re: Jazyk C [vyřešeno]
Přispěvatel: Pavel Půlpán 04 Března 2008, 20:46:45
V/V objekty z iostream maj taky svoje nevýhody. ;D