Řešim si tento úkol: potřeboval jsem zjistit frekvency tónů stupnice. Výsledek ukládám do pole a tisknu na obrazovku. Chtěl jsem k tomu přiřadit ještě názvy tónů. Do výčtovýho typu nemůžu přistupovat přes index a pole mi nejde nadefinovat.Jak na to?
Tohle jsem vygeneroval :-/
type t_stupnice = (C,Cis,D,Dis,E,F,Fis,G,Gis,A,B,H);
pole_tony = array [1..12] of t_stupnice;
var noty: pole_tony;
x:integer;
begin
...
write(noty[x]);
....
end
Fórum › Pascal
Deklarace pole
svobodicz píše:#
# Řešim si tento úkol: potřeboval jsem zjistit frekvency tónů stupnice. Výsledek ukládám do pole a tisknu na obrazovku. Chtěl jsem k tomu přiřadit ještě názvy tónů. Do výčtového typu nemůžu přistupovat přes index a pole mi nejde nadefinovat.Jak na to?#
#Tohle jsem vygeneroval :-/#
##
#type t_stupnice = (C,Cis,D,Dis,E,F,Fis,G,Gis,A,B,H);#
# pole_tony = array [1..12] of t_stupnice;#
#var noty: pole_tony;#
# x:integer;#
#begin#
#...#
#write(noty[x]);#
#....#
#end
Problem je v tom ze pascal nepracuje se symbolickym vyjadrenim vyctu ale s jejich ordinalnima hodnotama(C=0, Cis=1, ..) coz je z hlediska kompilatoru pochopitelne.
Takze pokud to chces vyresit pomuze ti urcite řetězec STRING.
Tak to nějak nepobírám :( Nechápu jak mu podstrčit ten výčet. Když zadávám řetězce z klávesnice, tak je v tom poli mám. Ale nechci to psát při každém spuštění. Nemohl bys mi tu syntaxi prosim napsat?
To svobodicz:
program Project2;
uses
SysUtils;
const
pole_tony : array [1..12] of string = ('C','Cis','D','Dis','E','F','Fis','G','Gis','A','B','H');
type t_stupnice = (C=1,Cis,D,Dis,E,F,Fis,G,Gis,A,B,H);
begin
writeln(pole_tony[Integer(Dis)]);
readln;
end.
To Jura_: Díky, způsob jak jsi nadefinoval konstantu jsem ještě nikde nepotkal :ms_0043:
když jsem to v zpustil, tak to na mě hodilo tuhle hlášku: "Project2.exe raised exception class ElnOutError with message 'I/O error 105'. Process stopped. Use Step or Run to continue." Co to znamená? :ms_0745:
svobodicz píše:#
# To Jura_: Díky, způsob jak jsi nadefinoval konstantu jsem ještš nikde nepotkal :ms_0043: #
##
#když jsem to v spustil, tak to na mě hodilo tuhle hlášku: "Project2.exe raised exception class ElnOutError with message ##uvozovka##I/O error 105##uvozovka##. Process stopped. Use Step or Run to continue." Co to znamená? :ms_0745:
Mno, já to původně psal v Delphi, čili se tam ještš vygeneruje specialni makro, které oznamuje překladači, že se jedná o console application. A takže jsem očekával, že když jsme v diskusi o Pascalu, tak jsem jej(to makro) záměrně vyhodil. Ale jak vidno, tak jsi to psal také v Delphi. čili níže přikladám, již fungující kód:
{$APPTYPE CONSOLE}
program Project2;
uses
SysUtils;
const
pole_tony : array [1..12] of string = ('C','Cis','D','Dis','E','F','Fis','G','Gis','A','B','H');
type t_stupnice = (C=1,Cis,D,Dis,E,F,Fis,G,Gis,A,B,H);
begin
writeln(pole_tony[Integer(Dis)]);
readln;
end.
To Jura_: Díky :ms_0435: jsem jantar :ms_0860: , tohle jsem přehlédl :ms_0043:
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Deklarace pole struktur v C# — založil paul27
Deklarace dvourozměrného pole C# — založil drobeczek
Deklarace pole stringů — založil PiranhaGreg
Automatická deklarace charů — založil Sprinter
Nejde deklarace proměnné — založil Bumblebee
Moderátoři diskuze