Turbo Pascal prosze o sprawdzenie
Prosze kogoś o podpowiedź w sprawie tego zadania:
program jjj;
uses CRT;
var t:array[1..10,1..10] of integer;
l:array['a'..'z'] of char;
x,y:integer;
begin
ClrScr;
writeln(' x1–x2–x3–x4–x5–x6–x7–x8–x9–x10');
writeln('y1 ');
writeln('| ');
writeln('y2 ');
writeln('| ');
writeln('y3 ');
writeln('| ');
writeln('y4 ');
writeln('| ');
writeln('y5 ');
writeln('| ');
writeln('y6 ');
writeln('| ');
writeln('y7 ');
writeln('| ');
writeln('y8 ');
writeln('| ');
writeln('y9 ');
writeln('| ');
writeln('y10 ');
writeln(' x1–x2–x3–x4–x5–x6–x7–x8–x9–x10');
writeln('');
x:=0;
y:=0;
writeln('Podaj wartosc X : ');
readln(x);
writeln('Podaj wartosc Y : ');
readln(y);
begin
if (x=1) and (y=1) then
GoToXY(1*x,2*y);
write(l);
readln;
end;
end.
PROBLEM DOTYCZY WPISYWANIA LITER W ODPOWIEDNIE MIEJSCE TEJ TABELI
program jjj;
uses CRT;
var t:array[1..10,1..10] of integer;
l:array['a'..'z'] of char;
x,y:integer;
begin
ClrScr;
writeln(' x1–x2–x3–x4–x5–x6–x7–x8–x9–x10');
writeln('y1 ');
writeln('| ');
writeln('y2 ');
writeln('| ');
writeln('y3 ');
writeln('| ');
writeln('y4 ');
writeln('| ');
writeln('y5 ');
writeln('| ');
writeln('y6 ');
writeln('| ');
writeln('y7 ');
writeln('| ');
writeln('y8 ');
writeln('| ');
writeln('y9 ');
writeln('| ');
writeln('y10 ');
writeln(' x1–x2–x3–x4–x5–x6–x7–x8–x9–x10');
writeln('');
x:=0;
y:=0;
writeln('Podaj wartosc X : ');
readln(x);
writeln('Podaj wartosc Y : ');
readln(y);
begin
if (x=1) and (y=1) then
GoToXY(1*x,2*y);
write(l);
readln;
end;
end.
PROBLEM DOTYCZY WPISYWANIA LITER W ODPOWIEDNIE MIEJSCE TEJ TABELI
Odpowiedzi: 20
Znowu przynudzam, ale pojawił się pewien problem, chciałbym aby wylosowane literki zostały przypisane do jakiejś tablicy np gracz1:array[1..7]of ... , i aby komputer losował nie jedną literke tylko 7, i źeby uzupełniał te literki które uźyje do wpisania (co runde), tak aby zawsze gracz dysponował 7 literkami. Problem tkwi teź w tym źe u mnie litery są zawarte w przedziale 65 – 90 i jeśli komputer trafi np 24 to nic się nie dzieje, jak to naprawić!
Poradziłem sobie z tym aby losowało litery z przedziału 65 – 90:
random(90–65+1) + 65 czyli
uses CRT;
const min = 65;
maks = 90;
var t:array[1..15,1..15] of char;
licznik, punkty, punkty2, losowana, x, y:integer;
i,menu:word;
b:byte;
gracz1:array[1..7] of char;
gracz2:array[1..7] of char;
Procedure gra;
begin
ClrScr;
x := 0;
y := 0;
licznik := 0;
punkty := 0;
punkty2 := 0;
{GRACZ 1}
Repeat
randomize;
losowana := random(maks + 1);
writeln('Wylosowana lczba to: ', losowana);
if ((losowana >= min) and (losowana
begin
{ wypisanie wylosowanej cyfry }
writeln('Kod ASCII: ', chr(losowana)); { zamiana cyfry na kod ASCII }
punkty := losowana div 20; { zmniejszenie kodu ASCII }
writeln('Litera: ', chr(losowana), ' ma ', punkty , ' punktow'); { wypisanie punktow }
end
else
begin
{ writeln('Nie trafiles...'); }
losowana:=0;
end;
inc(licznik);
writeln('Gracz 1: Oto wylosowana litera ' ,chr(losowana));
writeln('Wpisz liczbe dla X [pionowo] : ');
readln(x);
writeln('Wpisz liczbe dla Y [poziomo]: ');
readln(y);
writeln('OK wpisze ',chr(losowana), ' w ',x, ' poziomo i ',y,' pionowo');
readln;
TextColor(lightred);
writeln('GRACZ 1 twoj aktualny wynik: ',punkty+1);
writeln(t[x][y], chr(losowana)); {przypisuje warto˜ci x i y do tablicy}
t[x][y]:=chr(losowana);
readln;
Clrscr;
for y := 1 to 15 do
write('y',y,' ');
writeln;
for x := 1 to 15 do
begin
for y := 1 to 15 do
begin
if t[x,y] = '' then write(' ')
else write(t[x,y], ' ');
if y > 9 then write(' ');
end;
write('x',x);
writeln;
end;
Poradziłem sobie z tym aby losowało litery z przedziału 65 – 90:
random(90–65+1) + 65 czyli
random(maks – min + 1) + min
Wielkie dzięki :D postaram się to teraz przerobić na pascala :D
#include
int main(void)
{
int licznik = 0 ;
int punkty = 0 ;
const int min = 67 ;
const int maks = 90 ;
int losowana ;
printf("Losuje liczby z przedzialu 67 – 90\n") ;
srand((int)time(NULL));
losowana = rand() % maks ;
printf("%d\n",losowana) ;
if((losowana >= min) && (losowana
{
printf("Wylosowana liczba to: %d\n",losowana) ; //wypisanie wylosowanej cyfry
printf("A kod ASCII to: %c\n",losowana) ; //zamiana cyfry na kod ASCII
printf("Teraz przypiszemy im punkty\n") ; //taki komunikacik
punkty = losowana / 10 ; //zmniejszenie "kodu ascii"
printf("Litera: %c ma %d punktów\n",losowana,punkty) ; //wypisanie pktów
}
else
{
printf("Nie trafiłem...\n") ;
}
licznik++ ;
return 0 ;
}
Sory – mam nadzieję, źe sobie poradzisz. Jakbyś czegoś nie umiał to jedyna forma kontaktu ze mną to mail (vide profil).
Cały czas ja sie tutaj (w tym temacie) wypowiadałem, wiec nie mogłem postąpić inaczej, jak odpowiedzieć.
Mam nadzieje, źe to juź mój ostatni post, dotyczący tego programu.
Zastosowałem funkcję randomize tylko źe losuje mi ona ponad 256 róźnych znaków, a mi potrzeba tylko litery najlepiej duźe od A – Z (w tablicy ASCII to 65 do 90)
Dokładnie to potrzeba chyba coś w tym zmienić ale ja nie wiem co??
TA LICZBA 256 PRZY RANDOM – NIE WIEM CZYM JĄ ZASTĄPIĆ
CHCIAŁBYM RÓWNIEŻ TYM LITEROM PRZYPISAĆ PUNKTY :(
Zastosowałem funkcję randomize tylko źe losuje mi ona ponad 256 róźnych znaków, a mi potrzeba tylko litery najlepiej duźe od A – Z (w tablicy ASCII to 65 do 90)
uses CRT;
type litery='a'..'z';
var t:array[1..15,1..15] of char;
k:litery;
x,y:integer;
i,menu:word;
b:byte;
gracz1:array[1..7] of char;
gracz2:array[1..7] of char;
Procedure koniec;
begin
ClrScr;
Writeln('Do zobaczenia!!!');
readkey;
end;
Procedure gra;
begin
ClrScr;
x:=0;
y:=0;
Repeat
randomize;
i:=random(256) + 1;
b:=byte(i);
k:=chr(i);
gracz1[7] := (k);
writeln('Gracz 1: Oto wylosowana litera ' ,k);
{ readln(k); }
writeln('Wpisz liczbe dla X [pionowo] : ');
readln(x);
writeln('Wpisz liczbe dla Y [poziomo]: ');
readln(y);
writeln('OK wpisze ',k, ' w ',x, ' poziomo i ',y,' pionowo');
readln;
writeln(t[x][y], k); {przypisuje warto˜ci x i y do tablicy}
t[x][y]:=k;
readln;
Clrscr;
for y := 1 to 15 do
write('y',y,' ');
writeln;
for x := 1 to 15 do
begin
for y := 1 to 15 do
begin
if t[x,y] = '' then write(' ')
else write(t[x,y], ' ');
if y > 9 then write(' ');
end;
write('x',x);
writeln;
end;
randomize;
i:=random(256) + 1;
b:=byte(i);
k:=chr(i);
gracz2[7] := k;
writeln('Gracz 2: Oto wylosowana litera ',k);
{ readln(k); }
writeln('Wpisz liczbe dla X [pionowo] : ');
readln(x);
writeln('Wpisz liczbe dla Y [poziomo]: ');
readln(y);
writeln('OK wpisze ',k, ' w ',x, ' poziomo i ',y,' pionowo');
readln;
writeln(t[x][y], k);
t[x][y]:=k;
readln;
clrscr;
for y := 1 to 15 do
write('y',y,' ');
writeln;
for x := 1 to 15 do
begin
for y := 1 to 15 do
begin
if t[x,y] = '' then write(' ')
else write(t[x,y], ' ');
if y > 9 then write(' ');
end;
write('x',x);
writeln;
end;
Until (x = 0) or (y = 0);
halt;
end;
Procedure menuu;
begin
ClrScr;
repeat
writeln('Wybierz co chcesz zrobi ');
writeln;
writeln('1 – Nowa gra');
writeln('2 – Koniec');
readln(menu);
if (menu=1) then gra;
if (menu=2) then koniec;
until(menu=1) or (menu=2)
end;
begin
ClrScr;
menuu;
readln;
end.
Dokładnie to potrzeba chyba coś w tym zmienić ale ja nie wiem co??
Repeat
randomize;
i:=random(256) + 1;
b:=byte(i);
k:=chr(i);
gracz1[7] := (k);
TA LICZBA 256 PRZY RANDOM – NIE WIEM CZYM JĄ ZASTĄPIĆ
CHCIAŁBYM RÓWNIEŻ TYM LITEROM PRZYPISAĆ PUNKTY :(
hastic:
Mam tam 2 graczy i kaźdemu musze przypoźądkować pewną losową ilość literek np. po 7, nie wiem jak zrobić taką funkcje do losowego przypoźądkowywania tych liter graczom.
Pewnie istnieje coś takiego jak randomize() w C.
hastic:
NIE WIEM CZY MOGE ZAPISAĆ (gracza1 i gracza2) DO TABLICY JEDNOWYMIAROWEJ [1..7].
A po co ? Robisz dwie tablice gracz_jeden i gracz_dwa i do nich losujesz liczby.
hastic:
Jeszcze jedno mam tam 1 typ: type: litery='a'..'z'; i chciałbym tym literom przypoźądkować wartości, wiem źe musze to zrobić przez kod ASCII tylko nie mam pojęcia prosze tylko o 1 przykład.
#include
using namespace std ;
int main(void)
{
char c = 'a';
int d ;
d = c ;
cout <<<
cout <<<
return 0 ;
}
W końcu doszedłem prawie do końca.
Mam tam 2 graczy i kaźdemu musze przypoźądkować pewną losową ilość literek np. po 7, nie wiem jak zrobić taką funkcje do losowego przypoźądkowywania tych liter graczom. NIE WIEM CZY MOGE ZAPISAĆ (gracza1 i gracza2) DO TABLICY JEDNOWYMIAROWEJ [1..7]. Jeszcze jedno mam tam 1 typ: type: litery='a'..'z'; i chciałbym tym literom przypoźądkować wartości, wiem źe musze to zrobić przez kod ASCII tylko nie mam pojęcia prosze tylko o 1 przykład.
Z góry dziękuje i pozdrawiam
program m_e;
uses CRT;
type litery='a'..'z';
var t:array[1..15,1..15] of char;
k:litery;
x,y:integer;
begin
ClrScr;
x:=0;
y:=0;
Repeat
writeln('Gracz 1 Podaj litere: ');
readln(k);
writeln('Wpisz liczbe dla X [pionowo] : ');
readln(x);
writeln('Wpisz liczbe dla Y [poziomo]: ');
readln(y);
writeln('OK wpisze ',k, ' w ',x, ' poziomo i ',y,' pionowo');
readln;
writeln(t[x][y], k); {przypisuje warto˜ci x i y do tablicy}
t[x][y]:=k;
readln;
Clrscr;
for y := 1 to 15 do
write('y',y,' ');
writeln;
for x := 1 to 15 do
begin
for y := 1 to 15 do
begin
if t[x,y] = '' then write(' ')
else write(t[x,y], ' ');
if y > 9 then write(' ');
end;
write('x',x);
writeln;
end;
writeln('Gracz 2 Podaj litere: ');
readln(k);
writeln('Wpisz liczbe dla X [pionowo] : ');
readln(x);
writeln('Wpisz liczbe dla Y [poziomo]: ');
readln(y);
writeln('OK wpisze ',k, ' w ',x, ' poziomo i ',y,' pionowo');
readln;
writeln(t[x][y], k);
t[x][y]:=k;
readln;
clrscr;
for y := 1 to 15 do
write('y',y,' ');
writeln;
for x := 1 to 15 do
begin
for y := 1 to 15 do
begin
if t[x,y] = '' then write(' ')
else write(t[x,y], ' ');
if y > 9 then write(' ');
end;
write('x',x);
writeln;
end;
Until (x = 0) or (y = 0);
halt;
readln;
end.
Mam tam 2 graczy i kaźdemu musze przypoźądkować pewną losową ilość literek np. po 7, nie wiem jak zrobić taką funkcje do losowego przypoźądkowywania tych liter graczom. NIE WIEM CZY MOGE ZAPISAĆ (gracza1 i gracza2) DO TABLICY JEDNOWYMIAROWEJ [1..7]. Jeszcze jedno mam tam 1 typ: type: litery='a'..'z'; i chciałbym tym literom przypoźądkować wartości, wiem źe musze to zrobić przez kod ASCII tylko nie mam pojęcia prosze tylko o 1 przykład.
Z góry dziękuje i pozdrawiam
Najprostszy(?) sposób:
Wyciągnąć kod ASCII dla danej litery i tego uźyć jako systemu punktowania.
Ewentualnie zmniejszyć tą 'liczbę' (o kod ASCII sie rozchodzi) przez DIV.
Wyciągnąć kod ASCII dla danej litery i tego uźyć jako systemu punktowania.
Ewentualnie zmniejszyć tą 'liczbę' (o kod ASCII sie rozchodzi) przez DIV.
Chciałbym jeszcze do programu dodać taką opcje aby kaźda litera miała przypoźądkowaną liczbę punktów (np. A=5 , B=8...), i po wprowadzeniu do tabelki wyświetlała się suma punktów. Myślałem źeby wykoźystąc typy okrojone:
ale nie wiem??
type litery='a'..'z';
var k:litery;
ale nie wiem??
program tab;
uses CRT;
var t:array[1..15,1..15] of char;
x,y:integer;
k:char;
begin
ClrScr;
x:=0;
y:=0;
Repeat
writeln('Podaj litere: ');
readln(k);
writeln('Wpisz liczbe dla X [poziomo] : ');
readln(x);
writeln('Wpisz liczbe dla Y [pionowo]: ');
readln(y);
writeln('OK wpisze ',k, ' w ',x, ' poziomo i ',y,' pionowo');
writeln(t[x][y], k);
t[x][y]:=k;
Clrscr;
for x := 1 to 15 do
begin
for y := 1 to 15 do
write(t[x,y] + ' ');
write('x1'); {nie wiem jak to zrobć ale ten x1 program wyświetla na całej długości, a chciałbym aby był tylko w 1 miejscu tak aby wpisać jeszcze x2 x3..x14}
writeln;
end;
UNTIL (x=0) or (y=0);
halt;
readln;
end.
hastic:
Tylko program nie przechodzi jeszcze do odpowiednich linii, i w programie powstaje aź 10 tabelek :(
I ... ?
Stary – napisałem Ci gotowy program, wystarczy go 'przetłumaczyć' masz chyba podstawową wiedzę, zeby wiedzieć dlaczego 10 tabelek Ci rysuje.
Tak coś mi sie zdaję, źeś nie przepisał tego dokładnie ;)
Przerobiłem ten kod na Pascala:
Tylko program nie przechodzi jeszcze do odpowiednich linii, i w programie powstaje aź 10 tabelek :(
uses crt;
var poziom: integer;
pion: integer;
miejsce: integer;
plansza: array[0 .. 9, 0 .. 9] of integer;
begin
clrscr;
for poziom := 0 to 9 do
for pion := 0 to 9 do
plansza[poziom, pion] := 0;
writeln('Podaj liczbe, ktora wpisac:');
readln(miejsce);
writeln('Gdzie mam ja wpisac ? [ poziom ]: ');
readln(poziom);
writeln('Gdzie mam ja wpisac ? [ pion ]: ');
readln(pion);
writeln('OK. Wpisze ', miejsce, ' w ', poziom, ' , ', pion);
plansza[poziom][pion] := miejsce; { przypisujemu zaindeksowanej tablicy zmienna MIEJSCE ! }
for poziom := 0 to 9 do
write(#9, 'x', poziom);
writeln;
for poziom := 0 to 9 do
for pion := 0 to 10 do begin
if pion = 10 then
writeln(#9, 'y', poziom, #13) { wypisanie odstępu i y }
else
write(#9, plansza[poziom][pion]);
readln;
end;
end.
Tylko program nie przechodzi jeszcze do odpowiednich linii, i w programie powstaje aź 10 tabelek :(
Kod oczywiście w C będzie.
Teraz trochę opisów będzie:
Jak widzisz jest tam \t – oznacza to tabulacje poziomą – odpowiednikiem jest 8 spacji.
Najpierw wypisywany jest Y i dołączany indeks (za pomocą drugiego for) i na końcu \n wstawiana jest nowa linia.
Jeszcze jedna waźna uwaga: w C tablice indeksowane są od 0 (zera) , w pascalu zaczynają sie od 1. Dlatego będziesz musiał trochę pozmieniać pętle – ale kto napisał, źe będzie łatwo ?
#include
using namespace std ;
/***************************************************/
int main(void)
{
system("clear") ; //czysczenie ekranu – zbedne
int poziom = 0 ; // poziomy indeks tablicy
int pion = 0 ; // pionowy indeks tablicy
int miejsce = 0 ; // to tego wczytamy
int plansza[10][10] = {{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0}} ; //inicjacja tablicy zerami. Eleiminacja 'smieci'
cout <
cin >> miejsce ; // wczytujemy liczbe
cout <
cin >> poziom ; //wczytujemy poziomy indeks
cout <
cin >> pion ; // wczytujemy pionowy indeks
cout <<<<<<<
plansza[poziom][pion] = miejsce ; // przypisujemu zaindeksowanej tablicy zmienna MIEJSCE !
cout <<
for(poziom=0; poziom
for(pion=0; pion
{
if(pion == 10)
{
cout <<<
}
else
{
cout <<
}
}
return 0 ;
}
Teraz trochę opisów będzie:
Linia 26: cout <<
Jak widzisz jest tam \t – oznacza to tabulacje poziomą – odpowiednikiem jest 8 spacji.
Linia 32: cout <<<
Najpierw wypisywany jest Y i dołączany indeks (za pomocą drugiego for) i na końcu \n wstawiana jest nowa linia.
Jeszcze jedna waźna uwaga: w C tablice indeksowane są od 0 (zera) , w pascalu zaczynają sie od 1. Dlatego będziesz musiał trochę pozmieniać pętle – ale kto napisał, źe będzie łatwo ?
Oto cały czas mi chodziło, będe bardzo wdzięczny za ten kod :D :D :D
Koniecznie muszą być ramki ?
Mam takie coś:

Jak Cie pasuje to daj znać, wrzucę kod ;)
P.S: Cyferki zawsze wskakują tam gdzie mają wskoczyć.
Mam takie coś:

Jak Cie pasuje to daj znać, wrzucę kod ;)
P.S: Cyferki zawsze wskakują tam gdzie mają wskoczyć.
Mam taki kod:
i potrzebuje go tak przerobić aby ta wybrana litera wskakiwała do jakiejś tabelki tekstowej na ekranie zgodnie z wybraną wartością pion / poziom np dla [pion] wpisze 4 a dla [pozim] 3 to ta literka musi wskoczyć do tabelki w odpowiednie miejsce Bardzo dziękuje za pomoc męcze się z tym juź od tygodnia :(
program tab;
uses CRT;
var t:array[1..10,1..10] of char;
l:array['a'..'z'] of char;
x,y:integer;
k:char;
begin
ClrScr;
x:=0;
y:=0;
t[x][y]:=k;
writeln('Podaj litere: ');
readln(k);
writeln('Wpisz liczbe dla X [poziomo] : ');
readln(x);
writeln('Wpisz liczbe dla Y [pionowo]: ');
readln(y);
writeln('OK wpisze ',k, ' w ',x, ' poziomo i ',y,' pionowo');
writeln(t[x][y], k);
{
if (x=0) then (y
if (y=0) then (x
}
for x := 1 to 10 do
begin
for y := 1 to 10 do
write(t[x,y] + ' ');
writeln;
end;
readln;
end.
i potrzebuje go tak przerobić aby ta wybrana litera wskakiwała do jakiejś tabelki tekstowej na ekranie zgodnie z wybraną wartością pion / poziom np dla [pion] wpisze 4 a dla [pozim] 3 to ta literka musi wskoczyć do tabelki w odpowiednie miejsce Bardzo dziękuje za pomoc męcze się z tym juź od tygodnia :(
hastic:
wystarczy przy uźyciu dwóch zagnieźdźonych pętli "for" wypisać
zawartość kaźdego pola tablicy w odpowiednim miejscu ekranu
???
Co nie wiedziałeś ?
Jeden for wypisuje wiersze, drugi kolumny.
Odpowiednio ustawione wypiszą Ci tablice dwuwymiarową.
wystarczy przy uźyciu dwóch zagnieźdźonych pętli "for" wypisać
zawartość kaźdego pola tablicy w odpowiednim miejscu ekranu
???
hastic:
Niebardzo wiem jak to zrobić
:(
To pomyśl.
Niebardzo wiem jak to zrobić
:(
:(
Moźe lepiej wypisać tą tablicę (juź rozdzieloną na kolumny i wiersze) i obrysować ją ? W ten sposób zmienna zawsze wpadnie do koszyczka ;) .
myslałem nad uźyciem funkcji GoToXY tylko skąd moge wiedzieć gdzie w programie bedzie np. 5 kolumna i 7 wiersz