Zespół Szkół Elektryczno-mechanicznych
Praca kontrolna z PSiO
Opracował:
Artur Bojko
Legnica rok szkolny 2009/2010
Zadanie 1
#include <iostream>
#include <stdlib.h>
using namespace std;
int tab[10];
void zer()
{
for (int a = 0; a < 10; a++)
{
tab[a] = 0; //całej tablicy przypisuje zera
} //proste i genialne jak niemożesz usunąć to to zmień na nic
}
void los()
{
srand (time(NULL));
for(int a=0;a<10;a++)
{
tab[a] = rand()%100; // pseudo losowa liczba jest wpisywana w tablicę
}; // rand podaje ilość cykli procesora w 0.01s
};
int Max()
{
int max = tab[0];
for(int a = 0; a < 10; a++)
{
if(tab[a]>max) max = tab[a]; //jeśli liczba jest wieksza od poprzedniej
} //to jest zapisywana i sprawdzana z kolejną
return max;
}
int Min()
{
int min = tab[0];
for(int a = 0; a < 10; a++)
{
if(tab[a]<min) min = tab[a]; //jeśli liczba jest mniejsza od poprzedniej
} //to jest zapisywana i sprawdzana z kolejną
return min;
}
double sre()
{
int su;
for(int a = 0; a < 10; a++)
{
su+=tab[a]; //sumujemy wartość z tablicy z wartością su
}
return su / 10;
}
int powt(int n)
{
int su = 0;
for(int a = 0; a < 10; a++)
{
if(tab[a] == n) su++; //jeśli a jest takie samo jak n
} //to su jest zwiększane o 1
return su;
}
int podz(int n)
{
int su = 0;
for(int a = 0; a < 10; a++)
{
if( (tab[a] % n) == 0) // jeśli reszta jest zerem to liczba jest
{ //podzielna przez liczbę podaną
su++;
};
}
return su;
}
int main()
{ //dalej są już tylko komendy wywołuwawczei ze dwie pentle,
system("color 04"); //w tej linijce czerwony kolor tekstu
cout << "Zerowanie tablicy\n";
zer();
cout << "Wypelnianie tablicy...\n";
los();
cout << "Najwieksza wartosc w tablicy wynosi : " << Max() << "\n";
cout << "Najmniejsza wartosc w tablicy wynosi: " << Min() << "\n";
cout << "Srednia elementow : " << sre() <<"\n";
cout << "Ilość powtużeń jakiej liczby chcesz sprawdzić?";
cout<<"Podaj tę liczbę: ";
int wyli; cin >> wyli;
if(powt(wyli) == 0) cout << "Wprowadzona liczba nie zostala wylosowana ani razu.\n";
else if (powt(wyli) == 1) cout << "Podana liczna zostala wylosowana 1 raz ";
else cout << "Podana liczna zostala wylosowana " << powt(wyli) << " razy.\n";
cout << "Podaj liczbę dla kturej chcesz sprawdzić dzielniki wylosowane w tablicy.\n";
cout<<"Liczba to: ";
cin >> wyli;
podz(wyli);
cout <<"Takich liczb w tablicy jest: " << podz(wyli)<<"\n";;
system("pause");
return 0;
}Zadanie 2
#include <iostream>
using namespace std;
class Osoba //klasa
{
private:
char naz[20]; //zmiene prywatne...
int wiek;
public: //niewiem co tu można opisywać nic nadzwyczajnego
Osoba() // deklaracja i używanie zmiennych muwię o całej pracy
{
wiek = 0;
}
void Dopisz(char* nnaz, int nwiek)
{
if(nwiek>0)
{
strcpy(naz,nnaz);
wiek = nwiek;
}
else
{
cout << "Niemożesz podawać lat ujemnych i 0.\n";
}
}
int Zmien(char* nnaz, int nwiek)
{
if(wiek>0) //bardzo fajny warunek puźniej też stosowany
{ //niemogłem sprawdzić czy jest jakieś nazwisko czy go
strcpy(naz,nnaz);//więc sprawdzam czy wiek jest większy od 0
wiek = nwiek; //ktoś podrzucił mi ten pomysł, badzo skutreczny
return 0;
}
else
{
cout << "Nie można zmienic danych gdyż ich niema.\n";
return 1;
}
}
int Drukuj()
{
if(wiek>0)
{
cout << "Nazwisko: " << naz << ", Wiek: " << wiek << "\n";
return 0;
}
else
{
cout << "Nie można wydrukować danych gdyż ich niema.\n";
return 1;
}
}
int Skasuj()
{
if (wiek>0)
{
cout << "Usuwam : " << naz << "," << wiek << "\n";
wiek = 0;
strcpy(naz,"");
return 0;
}
else
{
cout << "Nie można skasować danych gdyż ich niema.\n";
return 1;
}
}
};
int main()
{
Osoba abc;
cout << "Wprowadz nazwisko : "; char* naz = new char[20]; cin >> naz;
cout << "Wprowadz wiek : "; int wiek; cin >> wiek;
abc.Dopisz(naz,wiek);
cout << "\nWprowadz nowe nazwisko : "; char* naz2 = new char[20]; cin >> naz2;
cout << "Wprowadz nowy wiek : "; int wiek2; cin >> wiek2;
cout<<endl;
abc.Zmien(naz2,wiek2);
cout<<endl;
abc.Drukuj();
cout<<endl;
abc.Skasuj();
abc.Drukuj();
system("pause");
return 0;
}Zadanie 3
#include <iostream>
using namespace std;
string im;
string naz;
string przed[5];
double oc[5];
int jed,sum;
double sre;
int main()
{
system("color 04");
cout << "Podaj imię ucznia: "; cin >> im;
cout << "Podaj nazwisko ucznia: "; cin >> naz;
cout<<"\n";
for(int a = 0; a < 5; a++)
{
cout << "Podaj przedmiot : "; cin >> przed[a];
}
cout <<"\n";
for(int a = 0; a < 5; a++)
{
cout << "Podaj ocene z przedmiotu " << przed[a] << ": "; cin >> oc[a];
}
cout <<"\n";
sum=oc[0]+oc[1]+oc[2]+oc[3]+oc[4];
sre=sum/5;
for(int a = 0; a < 5; a++)
{
if(oc[a] == 1) jed++;
}
switch(jed)
{
case 0:
cout << "Uczen zdal do nastepnej klasy. Jego srednia to: " << sre <<"\n";
break;
case 1:
cout << "Uczen ma 1 poprawke. Jego srednia to: " << sre<<"\n";
break;
default:
cout << "Uczeń niezdał\n";
break;
}
system("pause");
return 0;
}Zadanie 4
Sortowanie metoda bąbelkową polega na porównywaniu dwóch kolejnych liczb. Tak więc jeśli mamy 4,18,5,3 porównujemy najpierw 4 z 18, druga jest większa więc porównujemy 18 z 5, tym razem ta pierwsza jest większa więc zamieniamy miejscami 18 z 5, teraz mamy 4,5,18,3. następnie porównujemy 18 z 3. Zamieniamy je miejscami. Teraz od początku. Porównujemy 4 z 5 druga jest większa więc zostają na swoich miejscach, 5 z 3 i je zamieniamy. W tym momencie mamy 4,3,5,18, porównujemy 5 z 18 zostają na sowich miejscach. Znowu zaczynamy od początku. 4 z 3, zamieniamy je miejscami, 4 z 5, 5 z 18. W tym momencie po raz ostatni porównujemy wszystkie liczby, w poszukiwaniu przesunięć, gdy żadnych nie znajdujemy mamy posegregowane liczby.
#include <iostream>
using namespace std;
int tab[4]={111,65,1,34}; //tablica cztero elementowa
int pam; //trzeci kubek czyli zmienna do przenoszenia
int main()
{
system("color 04");
cout<<"Metoda bombelkowa\n";
cout<<"Tablica niepoukladana wyglada tak:\n";
for(int a=0; a<4; a++) //pentla zwraca wartosci w tablicy
{
cout<<"Wartosc "<<a+1<<" tablicy to: "<<tab[a]<<" \n";
};
cout<<"A to już poukładana tablica\n";
for(int tabli=0; tabli<2; tabli++)
{
for (int a=0, b=1; a<3; a++, b++) //pentla do porównywania
{ //dwuch kolejnych liczb
if (tab[a]>tab[b])
{ //jeśli warunek jest spełniony
pam=tab[b]; //liczby zamieniają się miejscami
tab[b]=tab[a];
tab[a]=pam; //tzw trzeci kubek do przechowywania liczby
pam=0;
};
};
};
for(int a=0; a<4; a++) //wydrukowuje uporządkowane liczby
{
cout<<"wartosc "<<a+1<<" tablicy to: "<<tab[a]<<" \n";
};
system("pause");
return 0;
}
Programowanie strukturalne i obiektowe
Semestr 2
7
Artur Bojko