Article View: pl.comp.lang.c
Article #520Re: Uwaga, lamer :))
From: 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
Technical Details
Message-ID:
<68m7pd$os6$1@sunsite.icm.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!not-for-mailReferences:
<86en2qnccw.fsf@izlpc131.am.lublin.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!not-for-mail From: "Czesiek Dlugolecki" <dlugi@kki.net.pl> Newsgroups: pl.comp.lang.c Subject: Re: Uwaga, lamer :)) Date: Sat, 3 Jan 1998 21:42:03 +0100 Organization: ICM's news server Lines: 151 Message-ID: <68m7pd$os6$1@sunsite.icm.edu.pl> References: <86en2qnccw.fsf@izlpc131.am.lublin.pl> NNTP-Posting-Host: ppp2-cst139.warszawa.tpnet.pl X-Newsreader: Microsoft Outlook Express 4.71.1712.3 X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit