#include
Algoritmide ja andmestruktuuride
Praktikum
Sügis 2009
Koostas: Elli Kopli
Juhendas: Ain Isotamm
Praktikum 2 (14.09.2009)
Ülesanne 1
Koosta programm, mis küsib kasutjalt lause ja siis pöörab selle ümber. Programmi ajaline
keeukus on O(n).
Lahendus
#include
Ülesande püstitus
Vastavalt oma matrikli viimasele numbrile valitakse ülesande variant. Koostada tuleb
C-keelne programm.
Tingimused:
1) failist F1 sisestatakse kirjed struktuuriga:
Nimi - string
Vanus naturaalarvuline
Palk reaalarvuline
2) faili F2 väljastatakse keskmisest madalama vanusega kirjed;
3) faili F3 väljastatakse keskmiset suurema palgaga kirjed.
Programmikood
#include
/*
Koostada programm, mis auto registreerimismärgi (autonumbri) numbri alusel
otsustab, kas tegemist on tavalise, eritellimusel tehtud või reeglitele
mittevastava numbrimärgiga.
Tavalisel numbrimärgil on kaks või kolm numbrikohta, millele järgnevad
kolm tähte. Näiteks "367ARZ", "82ZBG". Tellitud ja muud erinumbrid on
kuni 9-märgilised, millest vähemalt üks on number, teised on tähed.
Näiteks "MEDIA7", "R2", "MARIKA13".
Esitamise tähtaeg - 3. märts 2014
*/
char regn[100];
int length = 0, i, j=0;
printf("Sisesta registreerimism4rgi number > ");
scanf("%s", regn);
length = strlen(regn);
//printf("%dnn", length);
// 1 Reeglitele vastavus
// 1.1 Reg. nr. pikkus
if ( length < 2 || length > 9 ){
printf("nReg. number %s ei vasta reeglitele!n", regn);
return 0;
}
// 1.2 Sisaldab vähemalt 1 numbrit
for(i=0, j=0;i
,
. . .
kuni massiivi A elementide arv L kas vastab tingimusele AL AL 1 või
(kui see tingimus ei ole rahuldatud) L = 15;
3. faili F väljastatakse massiivi A elementide arv L ning elemendid
koos indeksitega.
Programmi kood C keeles
#include
#include
int actionsLeftP2=op2->getLvl();
//võitlus surmani
while(op1->getHP()>0 && op2->getHP()>0){
for(i=0; i
using namespace std;
// BST - Binary Search Tree
// http://en.wikipedia.org/wiki/Binary_search_tree
// Täisarvude otsimise kahendpuu koosneb dünaamilisse mällu paigutatavatest
// omavahel viitadega seotud tippudest:
struct node
{
int value;
int kordsus;
node *left, *right;
node( int uus)
{
value = uus;
kordsus = 1;
left = NULL;
right = NULL;
}
void insert( int v )
{
if(v == value)
{
kordsus++;
}
else
if ( v < value )
{
if( left == NULL)
{
node *uus = new node(v);
left = uus;
}
else left->insert(v);
}
if ( v > value )
{
if( right == NULL)
{
node *uus = new node(v);
right = uus;
}
else right -> insert(v);
}
}
int search( int v )
{
if(value == v)
{
cout<<" esineb puus "<
using namespace std;
// BST - Binary Search Tree
// http://en.wikipedia.org/wiki/Binary_search_tree
// Täisarvude otsimise kahendpuu koosneb dünaamilisse mällu paigutatavatest
// omavahel viitadega seotud tippudest:
struct node
{
int value;
int kordsus;
node *left, *right;
node( int uus)
{
value = uus;
kordsus = 1;
left = NULL;
right = NULL;
}
void insert( int v )
{
if(v == value)
{
kordsus++;
}
else
if ( v < value )
{
if( left == NULL)
{
node *uus = new node(v);
left = uus;
}
else left->insert(v);
}
if ( v > value )
{
if( right == NULL)
{
node *uus = new node(v);
right = uus;
}
else right -> insert(v);
}
}
int search( int v )
{
if(value == v)
{
cout<<" esineb puus "<
moodustatakse tekstrida T ,rea S sümbolitest, alates esimesest sümbolist c1 viimase sümbolini
c2;
3.kuvatakse (väljastatakse ekraanile) rida T ja tema pikkus l.
Programmikood
#include
1. Klvaiatuurilt korduvalt sisestatakse naturaalarvud;
2. ekraanile väljastatakse neev arvud, mis ei sisalda korduvaid numbreid;
3. jätkatakse kuni küsimusele järkamse soovi kohta sisestatakse vastus 'ei'.
4
Algoritm
5
6
Programmikood
#include
TARTU ÜLIKOOLI TEADUSKOOL PROGRAMMEERIMISE ALGKURSUS 2005-2006 Sisukord KURSUSE TUTVUSTUS: Programmeerimise algkursus.........................................6 Kellele see algkursus on mõeldud?..................................................................6 Mida sellel kursusel ei õpetata?.......................................................................6 Mida selle kursusel õpetatakse?......................................................................6 Kuidas õppida?.................................................................................................7 Mis on kompilaator?.............................................................................................8 Milliseid kompilaatoreid kasutada ja kust neid saab?......................................8 Millist keelt valida?...........................................................................................8 ESIMENE TEEMA: sissejuhatav sõnavõtt ehk 'milleks on v
Algoritm
Programmikood
#include
//Programm, mis kirjutab isikukoodist sünniaja välja.
#include
#include
scanf("%lf", &a); printf("Sisesta lõppväärtus b: "); scanf("%lf", &b); printf("Sisesta argument n: "); scanf("%lf", &n); h = (b-a)/n; for(i=0; ((a+i-1)*((b-a)/n)) < b; i++) { x = a+i*h; printf("%.2lf | ", x); if((4-pow(x,2))==0) //ehk kui funktsiooni nimetaja võrdub nulliga { printf("antud kohal määramatan"); } else { y=((sqrt(pow(x,3))+4*pow(x,2))-(4-pow(x,2))); //siin on 23. funktsiooni valem printf("%.3lfn", y); } } getchar(); getchar(); return 0; }
f(x) Arvutamist tükkel kordub kuni (a+(k-1)*h) < b kus k on x väärtuse positsioon.
Oma programmis kasutasin for, do while ja while tsüklid ning veel ka if funktsioon.
Graafik
Algoritm
Programm
#include
// 1. klaviatuurilt sisestatakse tippude arv N(1<=N<=10) ja nende koordinaatide
reaalarvulised massiivid X ja Y
// 2. ekraanile vljastatakse antud hulknurga klgede pikkuste reaalarvuline
massiiv L.
#include
2.4 GHZ AMD-l osutus piisavalt suureks juhuslike
arvude massiiv pikkusega 1 miljon elementi.
Programmi tööaja leidmine
Uurime kui kaua kulub aega algoritmi täitmiseks (C++ kood):
#include
Programmeerimise algkursus 1 - 89 Mida selle kursusel õpetatakse?...................................................................................................3 SISSEJUHATAV SÕNAVÕTT EHK 'MILLEKS ON VAJA PROGRAMMEERIMIST?'......3 PROGRAMMEERIMISE KOHT MUUDE MAAILMA ASJADE SEAS.............................3 PROGRAMMEERIMISKEELTE ÜLDINE JAOTUS ..........................................................7 ESIMESE TEEMA KOKKUVÕTE........................................................................................8 ÜLESANDED......................................................................................................................... 8 PÕHIMÕISTED. OMISTAMISLAUSE. ...................................................................................9 ................................................................................................................................................. 9 SISSEJUHATUS.......
VARIANT A
#include
TALLINNA TEHNIKAÜLIKOOL INFOTEHNOLOOGIA TEADUSKOND Arvutitehnika instituut Süsteemitarkvara õppetool IAX0583 Programmeerimine I FUNKTSIOONI TABULLEERIMINE Kodutöö nr.1 Tallinn 2017 Autorideklaratsioon Kinnitan, et käesolev töö on minu töö tulemus ja seda ei ole minu ega kellegi teise poolt varem esitatud. Tallinn 2017 Ülesanne saadi matriklikoodi järgi genereerides. Tingimused: 1) Kõik algandmed on reaalarvulised ning sisestatakse klaviatuurilt. 2) Tulemused väljastatakse tabeli kujul, mille veergudeks on vastavalt argumendi ja funktsiooni väärtused st. kujul Argument | Funktsioon X1 | Y1 X2 | Y2 jne 6. On antud argumendi x algväärtus A, samm H ning funktsiooni väärtuse y ülempiir YM. Kehtivad tingimused: H > 0.
4
Algoritm
5
Programmikood
#include
küpsiseid jääb üle. from math import ceil #ceil funktsioon ümardab komaga arvu ülesse. #Tordi andmed laius = int(input("Sisetage tordi mõõtmed.nMis on tordi laius?")) pikkus = int(input("Mis on tordi pikkus?")) korgus = int(input("Mitu kihti on tordis?")) pakisToodeteArv = int(input("Mitu küpsist on pakis?")) #Arvutab tordis küpsiste arvu def arvutaTordiSuurus(laius, pikkus, korgus): return laius * pikkus * korgus #Lokaalsed muutujad. #Funktsioon arvutab vajaliku pakkide arvu def arvutaPakkideArv(tordiSuurus, pakisToodeteArv): return ceil(tordiSuurus / pakisToodeteArv) pakkideArv = arvutaPakkideArv(arvutaTordiSuurus(laius, pikkus, korgus), pakisToodeteArv) print(pakkideArv) 4. Nimede korrastamine Modifitseeri veelkord kasutaja tervitamise programmi, kus kasutaja sisestab eraldi ees- ja perenime ning programm tervitab teda täisnimega.
Nende sees võivad olla plokid tingimuste ja
korduste tarbeks.
Lihtne tervitus
Näited
C C++ C#
#include
x[i+1]=x[i]+(pow(C,i)*H); i++; n=i-1; }while (x[i]<=B); } void v2ljastus (int x[15], float y[15]) { int i; printf("X | Yn"); for(i=0;i<=n;i++){ printf("%d | %fn", x[i], y[i]); } } int main(void) { int x[15]; float y[15]; int i, A, B, H, C; sisestamine (&A,&B,&H,&C); arvutamine (A,B,H,C,x,y); v2ljastus (x,y); printf("V2ljumiseks vajuta enter!n"); getchar(); return 0; } Programmi seletus Programm koosneb peaprogrammist int main ja kolmest alamprogrammist int sisestus, int arvutamine, int v2ljastus. Alamprogrammis "int sisestus" toimub vajalike arvude sisestus: argumendi algväärtus A, argumendi lõppväärtus B, sammu väärtus H ja sammu koefitsent C. Alamprogrammis "int arvutamine" toimub funktsiooni väärtuste ning argumentide arvutamine kuni argumendi väärtus on ületanud argumendi lõppväärtuse B.
= 5) temp[x++] = massiv[j]; 2. Find the longest numbers sequence (for example out of array [1111223344] -> sequence of number 1) int[] massiv = {}; int count = 1; int result = 0; int number = -1; for (int i = 1; i < massiv.length; i++) { if (massiv[i] == (massiv[i-1])) { count++; } else { count = 1;}обновляем, если цифра поменялась if (result <= count) { result = count; number = massiv[i]; 3. Find the biggest and the smallest element of array int numbers[] = {}; int smallest = numbers[0]; int largetst = numbers[0]; for(int i=1; i< numbers.length; i++){ if(numbers[i] > largetst)
TALLINNA TEHNIKAÜLIKOOL INFOTEHNOLOOGIA TEADUSKOND Arvutitehnika instituut Süsteemitarkvara õppetool 121055IASB IAG0081 Programmeerimine I MASSIIVID Kodutöö nr.2, varjant 664 Juhendaja: dotsent Vladimir Viies Margit Aarna Koostaja: Peeter Sikk Tallinn 2012 Autorideklaratsioon Kinnitan, et käesolev töö on minu töö tulemus ja seda ei ole minu ega kellegi teise poolt varem esitatud. Peeter Sikk 121055IASB Sisukord Ülesande püstitus 1. Klaviatuuril sisestatakse reaalarv vahemiksu 0-1. 2. Moodustatakse reaalarvuline massiiv A elementidega · · · ...... Kuni massiivi A elementide arv L kas
1 Loeng. Sissejuhatus Võtmesõnad: abstract assert boolean break byte case catch char class const* continue default double do else enum extends final finally float for goto* if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while NB! Tunduvad võtmesõnadena, aga on literaalid: false null true Algtüübid: Täisarvud · byte(8-bitiline), short(16-bitiline ), int(32-bitiline), long(64-bitiline) Ujukomaarvud · float(32-bitiline), double(64-bitiline) Tõeväärtused · boolean(true, false) Sümbolid · char(16-bitiline Unicode-sümbol, 'u0000'(0) kuni 'uffff'(65535)) Nimi: · on tõstutundlik
Tagastusväärtus: a public class Euclid { public static void main (String[] param) { int m=15; int n=6; if (param.length > 1) { m=Integer.parseInt (param [0]); n=Integer.parseInt (param [1]); } System.out.println ("SYT (" + m + ", " + n + ") = " + syt (m, n)); } // main public static int syt (int a, int b) { while (b != 0) { int j22k = a % b; a = b; b = j22k; } return a; } // syt } // Euclid Massiiv Kui muutujaid on vähe, siis pole ka probleemi neile nimede leidmisega. Näiteks ruutvõrrandi lahendamise programmis leidsime kaks lahendit ja võisime neid nimetada x1 ja x2. Kui peaksime aga arvutama 1000 väärtust mingi rutiinse reegli järgi, siis oleks väga ebamugav kirjeldada 1000 eraldi muutujat. Ka tavaelus oleks raske linnas orienteeruda, kui majad poleks tänavate kaupa nummerdatud, vaid igal
16 TMR0 = 0; 17 int n=126, m=30; 18 // Seadistatakse taimer: PS2=1, PS1=1, PS0=1, see on sagedusjagur 1:256 19 OPTION_REG = 0b00000111; 20 21 TRISD=0; // PORTD Data Direction Register 22 TRISC &= 0b11011111; // RC5 (kollane diood) väljundiks 23 24 // AN0 analoogisisend, ülejäänud digitaalsisendid 25 ADCON1 = 0b00001110; // A/D Control Register 1 26 27 while(1){ 28 if (m==0){ 29 if (RC5) RC5=0; else RC5=1; // Vigutab plaadil kollast valgusdioodi 30 m=30; 31 } 32 if (RA3) 33 PORTD=0b01011110; //0b10101010; 34 else{ 35 if (n==0){ 36 PORTD=tabel[number]; 37 number++; 38 if (number>9) number=0; 39 n=126; 40 } 41 } 42 // Igal taimeri ületäitumisel vähendatakse n-i väärtust ühe võrra 43 // ja nullitakse taimer 44 if (INTCON & Q_taimer){
omistamise operaatoreid, mille eesmärk on ennekõike lühendada koodi kirjutamist. ? 1 //omistamise operaatorid 2 $x = 8; 3 $y = 2; echo $x *= $y; 4 Sama asja saab kasutada ka tekstiosade liitmiseks. ? 1 $nimi = 'Mari'; 2 $pnimi = 'Kisakõri'; 3 $nimi .= $pnimi; echo $nimi; 4 Arvude ja teksti vormindamine Siiani oleme lauseid väljastanud funktsiooni echo abil. Leidub ka teisi võimalusi, millest igaühel on oma ülesanne. Üks nendest on printf, mis lisaks väljastamisele vormindab selle. Selleks tuleb lausesse märkida protsendimärgi (%) abil koht kuhu väärtust soovid ning seejärel väärtus. Järgmises näites on kohahoidjaks %s, mis vormindab väärtuse tekstina. ? 1 //muutuja väärtuste vormindamine 2 $nimi = 'Mari'; 3 printf('Tere %s', $nimi); Soovid lausese teisigi väärtusi? Pole probleem, lisa julgelt kohahoidjaid ning lisa soovitud väärtused. ? 1 //muutuja väärtuste vormindamine 2 $nimi = 'Mari';
kasutada samu andmeid teise tabeliga sidumisel. Andmebaasi haldus Esimest korda andmebaasidega tööle hakkamisel šokeerib noori veebitreialeid MySQL haldamine käsurealt (command line). See tähendab, et kõik SQL laused tuleb "käsitsi" sisestada. Linuxi kasutajad kasutavad selleks Bash'i ja Windowsi fännid Command Prompt'i. WAMP serveri puhul on kiirem viis klikkida ikoonil ja valida sealt MySQL>MySQL console. See avab konsooli akna paludes sisestada parool (Enter password). Kuna WAMP on mõeldud ainult kasutaja arvutis töötamiseks, siis andmebaasi serveri root kasutajal parooli pole - vajuta Enter. Kui kõik õnnestus peaksid nägema samasugust pilti. Anname mõned käsud ka. ? 1 SHOW DATABASES; See näitab kõiki andmebaase. ? 1 2 +--------------------+ 3 | Database | 4 +--------------------+ 5 | information_schema | 6 | a12 | | kuulutused |