Primeri koji jačaju problem solving veštinu

Задатак 1. Број људи.

Колико људи је присуствовало митингу?

Задатак 2. Паковање бомбона.

Који од предложених начина паковања бомбона је најефтинији?  (Погледајте видео, https://www.101qs.com/3038)

Dan inteligencije 2022

I ove godine tradicionalno S.Š. „Nikola Tesla“ organizuje aktivnosti sa kojima je dat doprinos obeležavanju međunarodnog događaja „Dan inteligencije 2022“.

Organizatori događaja su zajedno sa svojim učenicima pokušali da u toku oktobra upriliče aktivnosti koje stimulišu logički način razmišljanja u cilju prepoznavanja darovite dece i pojačan rad sa njima.

C++ solving programi

Šta je solving problem?

Umeće rešavanja realnih situacija iz svakodnevnog života je top veština savremenog sveta. Za rešavanje problema iz svakodnevnog života problem solveri, pojedinci ili grupe, koriste znanje koje je prethodno stečeno, razmatraju novonastalu situaciju na kritički i kreativan način i pronalaze više rešenja od kojih analizom i proverom bijaju najoptimalnije.

Koraci u procesu problem solvinga

  1. Razumevanje problema
  2. Istraživawe i prikupljanje informacija
  3. Pravljenje strategija i brainstorming
  4. Odabir najboljeg rešenja
  5. Akcija
  6. Provera

Pogledajte prezentaciju.

Jednostavni solving problem primeri

Problemi prema težini mogu da budu prosti i komleksniji, složeni. Prosti problemi rešavamo u „hodu“ dez da budemo svesni da koristimo problem solving u njihovom rešavanju. Kompleksni problemi zahtevaju koncentaciju posvećenost, a često i neizvesnost oko pronalaženja rešenja.

Za događaj „Dan inteligencije 20 22“ pripremljeni su prosti solving problemi za koje treba da se nađe rešenje koje omogućava automatsko rešavanje problema kodiranjem. Proste solving kodove kreiraju učenici ETR21 podeljeni u grupama. Svaka grupa rešava zadatke na origialan način koristeći solving problem veštine.

U prilogu su pripremljeni zadaci.

Kako se radilo?

Učenici odeljenja ETR21 formiraju tročlane timove koje imaju originalne nazive i prepoznatljive logoe. Svaki tim se trudi da kreiraju programe u C++-u za postavljene probleme. Prethodno analiziraju više načina i opcije rešavanja problema. Kreiraju algoritam koristeći Veb 2.00 alat Floworithm, a zatim kod u radnom okruženju DEV C++. Proverom konstatuju određene ndostatke koda koje rešavaju u „u hodu“. Razvijaju svoje komunikacione, logičke, matematičke, lingvističke i problem solving veštine. Svaka grupa svoje ideje, obrazloženja, algoritme i kodove skladišti na gugl drajv i deli sa članovima komisije „Dan inteligencije“. (Članovi komisije su profesori računarstva i informatike i programiranja: Biljana Ivanović, Mirjana Radosavljević, Srboljub Milosavljević.) Najbolje rešenje se prestavlja na javnom času koji ima za cilj da prikaže najbolje segmente događaja koji su u prijavljeni i realizovani u okviru međunarodnog projekta „DAN INTELIGENCIJE“ sa ciljem da se stimuliše rad sa darovitim učenicima. Najbolja ekipa dobija zahvalnicu škole za doprinos aktivnostima upriličenih za pomenuti događaj.

Pogledajte kako postupno timovi dolaze do rešenja.

Video pokazuje faze u procesu rešavanja prvig solving problema.

Delić atmosfere

Timu koji je imao najbolju implementiranu solving problem ideju dodeliće se zahvalnice.

Na oglednom času koji je održan 10.11.2022.god pobednički tim je prezentovao ideju realizacije C++ solvin problem kod. Učenicima su podeljene zahvalnice koje su kreirani kao dokaz angažovanja za međunarodni događaj „Dan inteligencije 2022“

Mape uma za proveru znanja

Učenici G41 iz predmeta računarstvo I informatika, u okviru nastavne teme “Rad sa bazama podataka”,  imaju zadatak da osmisle, projektuju I kreiraju bazu podataka. Etapno, prateći nastavno gradivo, na časovima ali I kući učenici podeljeni u grupe od po tri člana polako stvaraju  bazu podataka koja je originalna i  jedinstvena kreativno koncipirana i ažurirana  u toku izrade. Projektni zadatak zahteva logički pristup rešavanja problema. Za kreiranje ER dijagrama koristi se Veb 2.00 alat Dijagrams.net. Za kreiranje bazu koristi se SUBP SQLites.

Za dan inteligencije na  javnom čas učenici pokazuju kako na drugačiji način može da se utvrdi gradivo koristeći mape uma. Svaka grupa kreira koristeći Veb 2.00 alat Mind mapu uma koja predstavlja logičko objašnjenje postupka projektovanja, kreiranja I ažuriranja baze. Tročlana komisija sastavljena od profesora: informatike, srpskog jezika i likovne kulture vrednuju pretstavljene mape uma i nagrađuju najbolju mapu sa prigodnim skromnim poklonom.

Najbolja mapa uma:


Ako želite da pogledate ostale mape uma pogledajte video

Proces izrade projektnog zadataka koji osmišljava, projektuje i kreira bazu podataka.

Učeničkom timu čija mapa uma je najbolja idodeliće se zahvalnice.

Jednostruko povezane liste

Jedan oblik organizacije dinamičkog čuvanja podataka je jednostruko povezana lista. Lista prestavlja skup čvorova, elemenata, povezani pokazivačima u jednom smeru. Svaki čvor je strukturna promenljiva koja ima najmanje dva polja: jedno za čuvanje podataka, ili informacija o čuvanju podataka,  drugo za čuvanje pokazivača na sledećeg čvora liste.

Deklaracija jednostruko povezanih lista

struct cvor
{
char inf;
struct cvor *sledeci;
};
struct cvor *pocetak_liste;

lista1

Na početak liste pokazuje pokazivačka promenljiva početak_liste. Krajnji čvor liste u elementu za vezu (sledeći) sadrži vrednost NULL. Ako je lista prazna početak_liste takođe, ima vrednost NULL.

Formiranje jednostruke liste

Da bi formirali listu, prvo inicijaliziramo praznu listu dodelom

pocetak_liste=NULL;      

pocetakliste

Kako bi se kreirao prvi dinamički objekat (čvor liste), neophodno je da se dodeli memorijski prostor,
novi=new cvor;, gde je novi pokazivač na strukturu cvor  lista2

Dinamičkom objektu novi, mogu se dodeliti vrednosti
novi→inf= „A“;
novi→ sledeci=pocetak_liste; lista3.PNG

Da bi promenljiva pocetak_liste pokazivala na početak, treba joj dodeliti vrednost promenljivve novi, pocetak_liste=novi; 

lista5.PNG

Prostor za novi cvor liste se odvaja operatorom novi=new cvor;

lista4

Nakon novi→inf=“B“;
            novi→sledeci=pocetak_liste; Informacioni deo čvora dobija vrednost, uključuje se u  listu i to na njen početak lista 6

Da bi promenljiva pocetak_liste pokazivala na početak, ponavlja se dodela pocetak_liste=novi;

 lista7

Pr.1 
Formirati i ispisati jednostruko spregnutu listu?

Rešenje:

#include <cstdlib>
#include <iostream>

using namespace std;
/* Definicija cvora liste*/
struct cvor
{
char pod;
cvor* sledeci;
};
/*Funkcija za ispis liste*/
void ispis(cvor *tekuci)
{
while(tekuci!=NULL)
{
cout<<tekuci->pod<<;
tekuci=tekuci->sledeci;
}
return;
}

int main(int argc, char *argv[])
{
char ceo;
cvor *pocetni, *novi;
pocetni=NULL;
cout<<„Unesi sadrzaj liste“<<endl;
cout<<endl;
while ((ceo=getchar())!=’ ‘)
{
novi= new cvor;
novi->pod=ceo;
novi->sledeci=pocetni;
pocetni=novi;

}
ispis(pocetni);

system(„PAUSE“);
return EXIT_SUCCESS;
}

Pr. 2
Kreiraj i ispisi jednostruko spregnutu listu ciji elementi su celi brojevi?

Rešenje:

#include <cstdlib>
#include <iostream>

using namespace std;
/* Definicija cvora liste*/
struct cvor
{
int pod;
cvor* sledeci;
};
/*Funkcija za ispis liste*/
void ispis(cvor *tekuci)
{
while(tekuci!=NULL)
{
cout<<tekuci->pod<<endl;
tekuci=tekuci->sledeci;
}
return;
}

int main(int argc, char *argv[])
{
int ceo;
cvor *pocetni, *novi;
pocetni=NULL;
cout<<„Unesi sadrzaj liste“<<endl;
cout<<endl;
while (ceo!=9999)
{
cout<<„Unesi ceo broj kao element liste“<<endl;
cout<<„Za kraj unesi 9999″<<endl;
cin>>ceo;
if (ceo!=9999)
{
novi= new cvor;
novi->pod=ceo;
novi->sledeci=pocetni;
pocetni=novi;
cout<<endl;
}
}
ispis(pocetni);
system(„PAUSE“);
return EXIT_SUCCESS;
}

 

Pr.
Kreiraj jednostruko spregnutu listu pri čemu novi čvor se ubacuje na kraj liste?

Rešenje:

#include <cstdlib>
#include <iostream>

using namespace std;
/* definicija strukturnog podatka cvor*/
struct cvor
{
char inf;
struct cvor *sledeci;
};
void pisi (cvor *tekuci)
{
while (tekuci!=NULL)
{
cout<<tekuci->inf<<endl;
tekuci=tekuci->sledeci;
}
return ;
}
int main(int argc, char *argv[])
{
cvor *novi;
cvor *pocl=NULL;
cvor *krajl=NULL;
char ch;
cout<<„Ünesi sadryaj liste“<<endl;
while ((ch=getchar())!=’ ‘)
{
novi= new cvor;
novi->inf=ch;
if(pocl==NULL)
{
pocl=novi;
}
else
{
krajl->sledeci=NULL;
}
krajl=novi;
krajl->sledeci=NULL;
cout<<„Sadrzaj liste“<<endl;
pisi(pocl);
}

system(„PAUSE“);
return EXIT_SUCCESS;
}

 

 

 

Zadaci- dinamicki nizovi

Pr. 1. 

Napravite program koji sumira elemente celobrojnog niza koristeći dinamičke nizove, alociranu memoriju?

Rešenje:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int i,n, s=0;
cout<<„Unesi broj elemenata niza“<<endl;
cin>>n;
int *pniz= new int (n);
for( i=0;i<n;i++)
{
cout<<“ Unesi „<<i+1<<“ element niza „<<endl;
cin>>pniz[i];
s+=pniz[i];
}
cout<<“ Suma elemenata alociranog niza je s=“<<s<<endl;
delete[]pniz;
system(„PAUSE“);
return EXIT_SUCCESS;
}

Isti zadatak, ali uradjen korišćenjem funkcije suma koja unosi elemente alociranog, dinamičkog niza i iste sumira

#include <cstdlib>
#include <iostream>

using namespace std;
int suma(int *pniz, int duzina)
{
int i, s=0;
for( i=0;i<duzina;i++)
{
cout<<“ Unesi „<<i+1<<“ element niza „<<endl;
cin>>pniz[i];
s+=pniz[i];
}
return s;
}
int main(int argc, char *argv[])
{
int i,n, s=0;
cout<<„Unesi broj elemenata niza“<<endl;
cin>>n;
int *pniz= new int [n];
cout<<“ Suma elemenata alociranog niza je s=“<<suma(pniz,n)<<endl;
delete[]pniz;
system(„PAUSE“);
return EXIT_SUCCESS;
}

Pr. 2. Šta ispisuje sledeći program?

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int a[]={0, 1, 2, 3, 4};
int *p;
int i;
for (p=a, i=0;p<&a[4];p++)
{
cout<<*p<<endl;
}
cout<<“ „<<endl;
for (p=&(a[0]), i=0;p+i<a+4;p++,i++)
{
cout<<*(p+i)<<endl;

}
cout<<“ „<<endl;
for (p=a+4, i=0;i<=4;i++)
{
cout<<p[-i]<<endl;
}

system(„PAUSE“);
return EXIT_SUCCESS;
}

Rešenje:

dinamickiniz2

 

Uređivanje niza

Složeniji proces od  pretraživanja niza je uređivanje. Da bi se niz uredio neophodno je da se svaki element uporedi sa ostalim elementima, po potrbi, izvršiti njihovu međusobnu zamenu. Niz može biti sortiran u rastućem i opadajućem redosledu. Postoje nekoliko algoritama za sortiranje nizova.

Metod izbora (selection sort)

Zasniva se na veoma jednostavnoj ideji, izabrati najmanji element niza i dovesti ga na prvo mesto, zatim drugi najmanji, na drugo mesto, itd. do kraja niza.

Primer koji sortira niz u rastućem redosledu

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int a[10];
int i, j, n, pom;
/* Unos broja elemenata niza*/
cout<<„Unesi broj elemenata niza“<<endl;
cin>>n;
/*Unos elemenata niza*/
for(i=0;i<n;i++)
{
cout<<„Unesi „<<i+1<<“ element niza „;
cin>>a[i];
cout<<endl;
}
/*sortiranje*/
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
pom=a[i];
a[i]=a[j];
a[j]=pom;
}
}
}
/*Ispis niza*/
cout<<„Niz je uredjen u rastu’em redosledu“<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<endl;

}
system(„PAUSE“);
return EXIT_SUCCESS;
}

selekt sort

Pr1.

Napravite program koji niz a čiji elementi su celi brojevi uređuje u rastućem redosledu koristeći funkcije?

Rešenje:

#include
#include
using namespace std;
void ucitajniz(int a[], int n)
{
int i;
for (i=0;i<n;i++)
{
cout<<“ Unesi „<<i+1<<“ element niza“<<endl; cin>>a[i];
}
}
void razmeni(int *a, int *b)
{
int pom=*a;
*a=*b;
*b=pom;
}
void sortiraj(int a[], int n)
{
int i, j;
for (i=0;i<n-1;i++)
{
for (j=i+1;j<n;j++) { if (a[i]>a[j])
razmeni(&a[i], &a[j]);
}
}
}
void ispisiniz(int a[], int n)
{
int i;
for (i=0;i<n;i++)
cout<<“ a[„<<i+1<<„] je „<<a[i]<<endl;

}

int main(int argc, char *argv[])
{
int a[10],n;
cout<<„Unesi broj elemenata niza“<<endl; cin>>n;
ucitajniz(a,n);
sortiraj (a,n);
cout<<“ Sortirani niz:“<<endl;
ispisiniz(a,n);
system(„PAUSE“);
return EXIT_SUCCESS;
}

Metod mehuriće (babl sort)

Algoritam sortiranja bubble sort poredi dva susedna elementa niza i ako su pogrešno rasporežđeni zamenjuje im mesta. Posle porežđnja svih susednih parova najmanji od njih će isplivati na kraj niza. Zbog toga se ovaj metod naziva metod mehurića. Da bi se najmanji broj nesortiranog dela niza doveo na svoje mesto treba ponoviti postupak

Primer sortira niz metodom babl sort u rasući redosled

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

/* deklaracija niza i promenljive koje se koriste*/
int a[10];
int i, j, n, pom;
/* Unos broja elemenata niza*/
cout<<„Unesi broj elemenata niza“<<endl;
cin>>n;
/*Unos elemenata niza*/
for(i=0;i<n;i++)
{
cout<<„Unesi „<<i+1<<“ element niza „;
cin>>a[i];
cout<<endl;
}
/*sortiranje- babl sort*/
for(i=n-1; i>0; i–)
{
for(j=0; j<i; j++)
{
if(a[j]>a[j+1])
{
pom=a[j];
a[j]=a[j+1];
a[j+1]=pom;
}
}
}
/*Ispis niza*/
cout<<„Niz je uredjen u rastu’em redosledu“<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<endl;
}
system(„PAUSE“);
return EXIT_SUCCESS;
}

bublesort.JPG

Metod isort

Insert sort, u svakom trenutku je početak niza sortiran a sortiranje se vrši tako što se jedan po jedan element niza sa kraja ubacuje na odgovarajuće mesto.

Primer prikazuje uređivanje niz u opadajućem redosledu metodom isort

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int a[10];
int i, j, n, pom;
/* Unos broja elemenata niza*/
cout<<„Unesi broj elemenata niza“<<endl;
cin>>n;
/*Unos elemenata niza*/
for(i=0;i<n;i++)
{
cout<<„Unesi „<<i+1<<“ element niza „;
cin>>a[i];
cout<<endl;
}
/*sortiranje*/

for(i=1; i<n; i++)
{
for(j=i; (j>0) && (a[j]>a[j-1]); j–)
{

pom=a[j];
a[j]=a[j-1];
a[j-1]=pom;
}
}
/* Ispis niz*/

cout<<„Niz je uredjen u rastu’em redosledu“<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<endl;

}
system(„PAUSE“);
return EXIT_SUCCESS;
}

isort.JPG

Dropbox

Рачунари и програмирање

Дропбокс – мој фаворит.
Дропбокс је мрежни сервис за синхронизацију датотека (фајлова) између више уређаја (истог корисника!): кућни рачунар, рачунар на послу, таблет, паметни телефон…
То је складиште на мрежи у које се пакују фајлови којима корисник може приступити са било ког места: или преко претраживача (фајерфокс, хром…) или преко инсталираног програма, који сам обавља синхронизацију! Подршка је одлична за све системе: линукс, виндовс, андроид…  Бесплатан је и нуди 2GB простора. Тај простор се може повећати до 5GB, позивањем пријатеља да користе дропбокс. Уз доплату од 9,99$ месечно добија се 1ТB!

View original post 680 more words

Primeri zadataka koji koriste cin i cout

Računari i programiranje

Pr1.

Napravi program koji unosi i izdaje brojeve?

Rešenje:
#include <iostream>
usingnamespacestd;
intmain()
{
inta, b;
cout << "Unesi dva broja: ";
cin >> a;
cin >> b;
cout << "a = "<< a << endl;
cout << "b = "<< b << endl;
intc, d;
cout << "unesi jos dva broja: ";
cin >> c >> d;
cout << "c = "<< c << endl;
cout << "d = "<< d << endl;
doublereal;
cout << "Unesi jedan decimalni broj: ";
cin >> real;
cout << "real = "<< real;
return0;
}
Pr2.
Napravi program koji izračunava srednju vrednost četiri broja i ispiši rezultat u sledećem obliku:
Unesi cetiri realna broja:
Srednja vrijednost brojeva …., …., …. i …. je ……?

 Rešenje:

#include<iostream>

using namespace std;

int main()

{

    float a,b,c,d,srvr;

    cout<<„Unesi…

View original post 84 more words

Učeniški projekti

Projekat 1. SRTONOGA

slika

#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;

int main()
{
int gdriver=9;
int gmode=2;
initgraph(&gdriver,&gmode,““);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
int x,r=30;
// crtam oko
for (x=75;x<80;x=x+1)
{
circle(x,210,10);
}
for (x=60;x<65;x=x+1)
{
circle(x,220,10);
}
line(60,240,80,240);
//crtam glava

circle(75, 220, 40);

// crtam trup
for (x=150;x<600;x=x+2*r)
{
for (r=5;r<40;r=r+5)
{

circle(x, 240,r+5);
}
}
// crtam antene
line (70, 180,40,120);
line (85, 180,120,120);
// crtam nozice
for (x=160; x<600;x=x+2*r)
{
line(x, 280,x+r, 280+5);
line(x, 280, x-r,280+15);
}
getch();
return EXIT_SUCCESS;
}

Projekat 2.  KAMIONČE

Kamionceslika

 

#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
//Pode[avanja grafi;kih parametara
int gdriver=9;
int gmode=2;
initgraph(&gdriver,&gmode,“ „);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
rectangle(50,240,150,300);
rectangle(150,300,380,150);
rectangle(380,240,480,300);
moveto(150,240);
lineto(400,240);
circle(100,330,30);
circle(430,330,30);
moveto(50,240);
lineto(150,150);
line(150,195,100,195);
system(„PAUSE“);
return EXIT_SUCCESS;
}