Thread View: pl.comp.lang.c
3 messages
3 total messages
Started by Przemyslaw Frasunek
Fri, 02 Jan 1998 15:07
Uwaga, lamer :))
Author: Przemyslaw Frasunek
Date: Fri, 02 Jan 1998 15:07
Date: Fri, 02 Jan 1998 15:07
169 lines
3835 bytes
3835 bytes
Właśnie się uczę pisać w C. Napisałem przed chwilą coś na kształt mojego
pierwszego programiku:
-[snip]-
#define ESC 'x'
#define MAXPIERW 28
#define ILOSC 20
#define SZYBKOSC 5
static short i, j, pozycja, punkty, los, licznik;
static char ch;
static char symb[3];
static char outstr[6];
static short firstletter, ok;
typedef struct _REC_pierwiastek {
char symbol[3];
char nazwa[11];
} _REC_pierwiastek;
static _REC_pierwiastek pierwiastek[MAXPIERW] = {
{ "Na", "SOD" },
{ "K", "POTAS" },
{ "Ca", "WAPN" },
{ "Mg", "MAGNEZ" },
{ "Al", "GLIN" },
{ "Fe", "ZELAZO" },
{ "Cu", "MIEDZ" },
{ "Zn", "CYNK" },
{ "Pb", "OLOW" },
{ "Cl", "CHLOR" },
{ "S", "SIARKA" },
{ "O", "TLEN" },
{ "N", "AZOT" },
{ "C", "WEGIEL" },
{ "H", "WODOR" },
{ "P", "FOSFOR" },
{ "Si", "KRZEM" },
{ "Ag", "SREBRO" },
{ "Au", "ZLOTO" },
{ "Pt", "PLATYNA" },
{ "Ra", "RAD" },
{ "Hg", "RTEC" },
{ "Sn", "CYNA" },
{ "Po", "POLON" },
{ "Br", "BROM" },
{ "I", "JOD" },
{ "He", "HEL" },
{ "Ar", "ARGON" }
};
static void welcome()
{
printf("SYMBOLE CHEMICZNE - Moj pierwszy programik\n");
printf("s - start\n");
printf("x - wyjscie z programu\n");
do {
scanf("%c",&ch);
} while (ch != 's' && ch != ESC);
if (ch == 's')
los += srand(MAXPIERW);
if (ch == ESC)
exit(0);
}
static void zle()
{
printf("ZLE! Ma byc %s\n", symb);
punkty--;
}
static void dobrze()
{
punkty++;
sprintf(outstr, "%2d", punkty);
printf("Punkty: %s\n", outstr);
printf("DOBRZE!\n");
}
static void ocena()
{
sprintf(outstr, "%3ld", (long)ILOSC);
printf("Ilosc pytan: %s\n", outstr);
sprintf(outstr, "%3d", punkty);
printf("Punkty: %s\n", outstr);
}
main(argc, argv)
int argc;
char *argv[];
{
welcome();
punkty += 0;
for (licznik = 1; licznik <= ILOSC; licznik++) {
puts(pierwiastek[los-1].nazwa);
strcpy(symb, pierwiastek[los-1].symbol);
ok += 0;
firstletter += 1;
do {
scanf("%c",&ch);
if (ch == ESC) {
exit(0);
} else {
if (firstletter == 0) {
if (strlen(symb) == 1) {
if (symb[0] == ch)
ok += 1;
} else {
if (symb[0] == ch)
firstletter += 0;
}
} else {
if (toupper(symb[1]) == ch)
ok += 1;
else {
if (symb[0] != ch)
firstletter += 1;
}
}
}
} while (!(ch == ESC || ok == 0 || ok == 1));
if (ok == 1)
dobrze();
if (ok == 0)
zle();
}
ocena();
}
-[snip]-
Jednak... nie działa.
izlpc131:venglin:~/zsyp> ./symbole
SYMBOLE CHEMICZNE - Moj pierwszy programik
s - start
x - wyjscie z programu
s
ARGON
ZLE! Ma byc Ar
ARGON
Ar
ZLE! Ma byc Ar
ARGON
ZLE! Ma byc Ar
ARGON
ZLE! Ma byc Ar
ARGON
AR
ZLE! Ma byc Ar
ARGON
Punkty: -4
DOBRZE!
ARGON
Punkty: -3
DOBRZE!
ARGON
x
izlpc131:venglin:~/zsyp>
No właśnie. Dlaczego?
--
* Fido: 2:480/124 ** WWW: platon.man.lublin.pl/~venglin ** PGP key on finger *
* Inet: venglin@platon.man.lublin.pl ** PGP:D48684904685DF43EA93AFA13BE170BF *
Re: Uwaga, lamer :))
Author: milosz danielewski
Date: Sat, 03 Jan 1998 19:00
Date: Sat, 03 Jan 1998 19:00
14 lines
1008 bytes
1008 bytes
On 02 Jan 1998 16:07:26 +0100, Przemyslaw Frasunek <venglin@izlpc131.am.lublin.pl> wrote: > >Właśnie się uczę pisać w C. Napisałem przed chwilą coś na kształt mojego >pierwszego programiku: [ciach] >No właśnie. Dlaczego? Przejrzalem Twoj program wprawdzie dosc pobieznie, ale _nigdzie_ nie zauwazylem, zebys nadawal niektorym zmiennym wartosci poczatkowe np. zmiennej "ok". I co ma robic np. linia " ok += 0;" ? milosz danielewski
Re: Uwaga, lamer :))
Author: Czesiek Dlugolecki
Date: Sat, 03 Jan 1998 20:42
Date: Sat, 03 Jan 1998 20:42
148 lines
4117 bytes
4117 bytes
Przemyslaw Frasunek wrote in message
<86en2qnccw.fsf@izlpc131.am.lublin.pl>...
>Właśnie się uczę pisać w C. Napisałem przed chwilą coś na kształt mojego
>pierwszego programiku:
Ja tez przejzalem i mam nastepujace wnioski. Po pierwsze primo ;)
x+=y; nie znaczy ze x=y a znaczy x=x+y i to powod wielu bledow
Po drugie kwestia generowania liczb losowych (pseudo):
u ciebie test sprawdza caly czas ten sam pierwiastek
u mnie jest troche lepiej :))) ale nie wiem jak to dobrze zrobic w
c linuxowym, bo w dosie jest inaczej.
Po trzecie mniej zmiennych zewnetrznych
teraz przejrzyj:
[CUT HERE]
include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define ESC 'x'
#define MAXPIERW 28
#define ILOSC 20
#define SZYBKOSC 5
static short i=0, j=0, pozycja=0, punkty=0, los=0, licznik=0;
static char ch;
static char symb[3]="\0";
static char outstr[6]="\0";
static short firstletter=0, ok=0;
typedef struct _REC_pierwiastek
{
char symbol[3];
char nazwa[11];
}pierw;
static pierw pierwiastek[MAXPIERW] = {
{ "Na", "SOD" },
{ "K", "POTAS" },
{ "Ca", "WAPN" },
{ "Mg", "MAGNEZ" },
{ "Al", "GLIN" },
{ "Fe", "ZELAZO" },
{ "Cu", "MIEDZ" },
{ "Zn", "CYNK" },
{ "Pb", "OLOW" },
{ "Cl", "CHLOR" },
{ "S", "SIARKA" },
{ "O", "TLEN" },
{ "N", "AZOT" },
{ "C", "WEGIEL" },
{ "H", "WODOR" },
{ "P", "FOSFOR" },
{ "Si", "KRZEM" },
{ "Ag", "SREBRO" },
{ "Au", "ZLOTO" },
{ "Pt", "PLATYNA" },
{ "Ra", "RAD" },
{ "Hg", "RTEC" },
{ "Sn", "CYNA" },
{ "Po", "POLON" },
{ "Br", "BROM" },
{ "I", "JOD" },
{ "He", "HEL" },
{ "Ar", "ARGON" }
};
//tez nie wiem jak to jest w linuxie wiec zrobilem tak dziwnie
//w dosie getche()
char readkey()
{
char r;
r=getchar();
return r;
}
static void welcome()
{
printf("SYMBOLE CHEMICZNE - Moj pierwszy programik\n");
printf("s - start\n");
printf("x - wyjscie z programu\n");
do{
// scanf("%c",&ch);
ch=readkey();
}while (ch == 's' || ch == ESC);
if (ch == 's')los=5; //(random()%MAXPIERW+1); to wogole nie potrzebne tu
if (ch == ESC)exit(0);
}
static void zle(void)
{
printf("ZLE! Ma byc %s\n", symb);
punkty--;
}
static void dobrze()
{
punkty++;
sprintf(outstr, "%2d", punkty);
printf("Punkty: %s\n", outstr);
printf("DOBRZE!\n");
}
static void ocena()
{
sprintf(outstr, "%3ld", (long)ILOSC);
printf("Ilosc pytan: %s\n", outstr);
sprintf(outstr, "%3d", punkty);
printf("Punkty: %s\n", outstr);
}
main(int argc,char *argv[])
{
welcome();
punkty = 0;
for(licznik=1;licznik<=ILOSC;licznik++)
{
los=rand()%MAXPIERW+1;
puts(pierwiastek[los-1].nazwa);
strcpy(symb, pierwiastek[los-1].symbol);
ok = 0;
firstletter = 0;
do {
//scanf("%c",&ch);
ch=readkey();
if (ch == ESC){exit(0);}
else
{
if (firstletter == 0)
{
if(strlen(symb) == 1){if (toupper(symb[0]) == toupper(ch))ok = 1;}
else {
if (toupper(symb[0]) == toupper(ch))firstletter = 1;
}
}
else
{
if (toupper(symb[1]) == toupper(ch))ok = 1;
else {ok=0;firstletter=2;}
}
}
} while (!(ch == ESC || ok == 1 || firstletter==2));
if (ok == 1)
dobrze();
if (ok == 0)
zle();
}
ocena();
}
[CUT HERE]
Jak bedziesz mial jakies watpliwosci napisz
Czesiek Dlugolecki dlugi@kki.net.pl
elessar@polbox.com
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads