Last active
August 29, 2015 14:14
-
-
Save ad-m/e587b0e06be8667fac75 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
using namespace std; | |
/* Zadanie 1 | |
* Grupa I-2 | |
* Dany jest ciag n-elementowy liczb calkowitych zakonczony zerem. | |
* Napisz program, ktory wczytuje kolejne elementy tego ciagu policzy | |
* i wypisze iloczyn cyfr liczb nieparzystych i sume cyfr | |
* liczb nieparzystych. Uzyj funkcji. | |
* Dane przekazuj przez parametry. */ | |
int suma_cyfr(int liczba){ | |
int r=0; | |
while(liczba>0){ | |
r+=liczba%10; | |
liczba/=10; | |
}; | |
return r; | |
} | |
int iloczyn_cyfr(int liczba){ | |
int r=1; | |
while(liczba>0){ | |
r*=liczba%10; | |
liczba/=10; | |
}; | |
return r; | |
} | |
bool czy_parzysta(int liczba){ | |
return (liczba%2==0); | |
}; | |
void oblicz(int liczba, int &parzyste, int &nieparzyste){ | |
if(czy_parzysta(liczba)){ | |
parzyste+=suma_cyfr(liczba); | |
}else{ | |
nieparzyste*=iloczyn_cyfr(liczba); | |
}; | |
}; | |
void wczytaj(int &parzyste, int &nieparzyste){ | |
int liczba; | |
do{ | |
cin >> liczba; | |
oblicz(liczba, parzyste, nieparzyste); | |
}while(liczba!=0); | |
} | |
int main(){ | |
int parzyste=0; | |
int nieparzyste=1; | |
wczytaj(parzyste, nieparzyste); | |
cout << "Iloczyn cyfr liczb nieparzystych" << nieparzyste << endl; | |
cout << "Suma cyfr liczb parzystych" << parzyste << endl; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<string> | |
#include<vector> | |
/* Grupa I-2 | |
* Zadanie 2 | |
* Dany jest ciag znakow zakonczony znakiem #. Napisz program, ktory | |
* znajdzie i wypisze najdluzsze podciagi malych liter. Uzyj funkcji. */ | |
using namespace std; | |
void wypisz_wektor(vector<char> T){ | |
for(unsigned int i=0; i<=T.size(); i++){ | |
cout << T[i]; | |
}; | |
}; | |
void operuj(vector<char> &najdluzszy){ | |
vector<char> ciag; | |
while((znak=cin.get())!='#'){ | |
if(znak>='a' && znak<='z'){ | |
ciag.push_back(znak); | |
}else{ | |
if(najdluzszy.size()<ciag.size()){ | |
najdluzszy=ciag; | |
wypisz_wektor(ciag); | |
}; | |
ciag.clear(); | |
} | |
}; | |
}; | |
int main(){ | |
char znak; | |
vector<char> najdluzszy; | |
operuj(najdluzszy); | |
wypisz_wektor(najdluzszy); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<string> | |
#include<stdlib.h> | |
#include <sstream> | |
/* Grupa I-2 | |
* Zadanie 3 | |
* Dana jest tablica liczb rzeczywistych. Napisz program, ktory na | |
* podstawie tych danych utworzy dwie nowe tablice. Jedna z nich | |
* zawiera te liczby, ktorych suma cyfr jest parzysta, a druga | |
* pozostale. Nastepnie dla kazdej nowej tablicy wypisze te tablice i | |
* ilosc ich elementow. Uzyj funkcji. */ | |
using namespace std; | |
void wczytaj_tablice(float *T, int n){ | |
for(int i=0; i<n; i++){ | |
T[i]=(float)(rand()%2500)/10; | |
}; | |
}; | |
void wypisz_tablice(float *T, int n){ | |
cout << "Liczba rekordow: " << n << endl; | |
cout << "Rekordy: "; | |
for(int i=0; i<n; i++){ | |
cout << "[" << T[i] << "]"; | |
}; | |
cout << endl; | |
}; | |
int suma_cyfr(float liczba){ | |
int r=0; | |
std::ostringstream ss; | |
ss << liczba; | |
const char* result = ss.str().c_str(); | |
while(*result != '\0'){ | |
if(*result == '.'){ result++; continue;}; | |
cout << *result; | |
r+=(*result-48); | |
result++; | |
}; | |
return r; | |
} | |
void oblicz(float *T, int n, float *parzyste, int &m, float *nieparzyste, int &l){ | |
for(int i=0; i<n; i++){ | |
if(suma_cyfr(T[i])%2==0){ | |
parzyste[m]=T[i]; | |
m++; | |
}else{ | |
nieparzyste[m]=T[i]; | |
l++; | |
}; | |
}; | |
}; | |
int main(){ | |
srand(5); | |
int n=0, m=0, l=0; | |
cin >> n; | |
float *T=new float[n]; | |
float *parzyste=new float[n]; | |
float *nieparzyste=new float[n]; | |
wczytaj_tablice(T, n); | |
wypisz_tablice(T, n); | |
oblicz(T, n, parzyste, m, nieparzyste, l); | |
cout << "===Wszystkie===" << endl; | |
wypisz_tablice(T, n); | |
cout << "===Parzyste===" << endl; | |
wypisz_tablice(parzyste, m); | |
cout << "===Nieparzyste===" << endl; | |
wypisz_tablice(nieparzyste, l); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<fstream> | |
using namespace std; | |
/* Grupa I-2 | |
* Zadanie 4 | |
* Dana jest struktura firmy nazwa, adres, przychod, koszty. | |
* Firmy zapisane sa w pliku binarnym. Napisz program, ktory umozliwi | |
* zmiane wybranego rekordu. */ | |
struct TFirma{ | |
char nazwa[20]; | |
char adres[20]; | |
float przychod; | |
float koszty; | |
void wczytaj(); | |
void wypisz(); | |
}; | |
void TFirma::wczytaj(){ | |
cout << "Nazwa: "; cin >> nazwa; | |
cout << "Adres: "; cin >> adres; | |
cout << "Przychod: "; cin >> przychod; | |
cout << "Koszty: "; cin >> koszty; | |
}; | |
void TFirma::wypisz(){ | |
cout << "Nazwa: " << nazwa << endl; | |
cout << "Adres: " << adres << endl; | |
cout << "Przychod: " << przychod << endl; | |
cout << "Koszty: " << koszty << endl; | |
}; | |
int liczba(){ | |
fstream plik("baza.dat", ios::in | ios::binary); | |
plik.seekp(ios::end); | |
plik.close(); | |
return plik.tellp()/sizeof(TFirma); | |
}; | |
void dodaj(){ | |
fstream plik("baza.dat", ios::out | ios::ate); | |
TFirma rekord; | |
rekord.wczytaj(); | |
plik.write(reinterpret_cast<char*>(&rekord), sizeof(TFirma)); | |
plik.close(); | |
}; | |
void aktualizuj(){ | |
fstream plik("baza.dat", ios::out | ios::in); | |
TFirma rekord; | |
int id; | |
int max = liczba(); | |
do{ | |
cout << "POdaj numer rekordu"; | |
cin >> id; | |
}while(id < 0 || id > max); | |
plik.seekp(sizeof(TFirma)*id); | |
plik.seekg(sizeof(TFirma)*id); | |
plik.read(reinterpret_cast<char*>(&rekord), sizeof(TFirma)); | |
rekord.wypisz(); | |
cout << "==Aktualizacja==" << endl; | |
rekord.wczytaj(); | |
plik.write(reinterpret_cast<char*>(&rekord), sizeof(TFirma)); | |
plik.close(); | |
}; | |
void menu(){ | |
int choose; | |
do{ | |
cout << "1 - Dodaj" << endl; | |
cout << "2 - Aktualizuj" << endl; | |
cout << "0 - Koniec" << endl; | |
cin >> choose; | |
switch(choose){ | |
case 1: | |
dodaj(); | |
break; | |
case 2: | |
aktualizuj(); | |
break; | |
case 0: | |
cout << "Bye"; | |
break; | |
default: | |
cout << "Nie ma takiej opcji. Sprobuj ponownie!"; | |
}; | |
}while(choose !=0); | |
}; | |
int main(){ | |
menu(); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
using namespace std; | |
/* Grupa 1 | |
* Zadanie 1 | |
* Dany jest ciag n-elementowy liczb calkowitych. Napisz program | |
* obliczajacy najdluzszy podciag zawierajacy liczby podzielne przez 3. | |
* Wypisz dlugosc i ten podciag, jesli wiecej to wszystkie. */ | |
int main(){ | |
vector<int> ciag; | |
vector<int> ciag_max; | |
int liczba; | |
int n; | |
cin >> n; | |
while(n>0){ | |
cin >> liczba; | |
if(liczba%3 == 0){ | |
ciag.push_back(liczba); | |
}else{ | |
ciag.clear(); | |
}; | |
ciag_max = ciag_max.size() > ciag.size() ? ciag_max : ciag; | |
n--; | |
}; | |
cout << "Najdluzszy ciag podzielnych przez 3 mial dlugosc " << ciag_max.size() << ":"; | |
for(unsigned int i=0; i<ciag_max.size(); i++){ | |
cout << ciag_max[i]; | |
if(i!=ciag_max.size()-1){ | |
cout << ","; | |
}; | |
}; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<cstdlib> | |
using namespace std; | |
/* Grupa I | |
* Zadanie 2 | |
* Dana jest tablica NxM liczb rzeczywistych. N i M sa nieparzyste. | |
* Napisz program, ktory oblicze sume liczb z tej tablicy w sposob | |
* wskazany na rysunku. */ | |
void wypelnij(int **T, int n,int m){ | |
for(int i=0; i<n; i++){ | |
for(int j=0; j<m; j++){ | |
T[i][j]=rand()%20+1; | |
}; | |
}; | |
}; | |
void wypisz(int **T, int n,int m){ | |
for(int i=0; i<n; i++){ | |
for(int j=0; j<m; j++){ | |
cout << "[" << T[i][j] << "]\t"; | |
}; | |
cout << endl; | |
}; | |
}; | |
void add(int &suma, int **T, int x, int y){ | |
cout << suma << "+" << T[x][y] << "(" << x << "x" << y << ")" << endl; | |
suma+=T[x][y]; | |
}; | |
int main(){ | |
int M,N; | |
M=5; | |
//cin >> M; | |
N=5; | |
//cin >> N; | |
int **T = new int * [N]; | |
for(int i=0; i<N; i++){ | |
T[i]=new int[M]; | |
}; | |
wypelnij(T, N,M); | |
wypisz(T, N, M); | |
int x = N/2; | |
int y = M/2; | |
int j=1; | |
int suma=0; | |
cout << "1:" << endl; | |
for(int end=x-j; x>end; x--){ | |
add(suma, T, x, y); | |
}; | |
while(x>=0 && y>=0){ | |
cout << "2:" << endl; | |
for(int end=y+j; y<end; y++){ | |
cout << end << endl; | |
add(suma, T, x, y); | |
}; | |
cout << "3:" << endl; | |
for(int end=x+j+1; x<end; x++){ | |
cout << end << endl; | |
add(suma, T, x, y); | |
}; | |
cout << "4:" << endl; | |
for(int end=y-j-1; y>end; y--){ | |
cout << end << endl; | |
add(suma, T, x, y); | |
}; | |
cout << "5:" << endl; | |
for(int end=x-j-2; x>end; x--){ | |
cout << end << endl; | |
add(suma, T, x, y); | |
}; | |
j+=2; | |
cout << "============" << endl; | |
}; | |
for(int i=0; i<N; i++){ | |
delete [] T[i]; | |
}; | |
delete [] T; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
using namespace std; | |
/* Grupa I | |
* Zadanie 3 | |
* Oblicz n-ty wyraz ciagu fibonacciego. | |
* Wzor: f_n_ = f_n-1+f_n-2_, gdzie f_0_=0, f_1_=1. | |
* Wykonaj napisany program krok po kroku. | |
* Jaki bedzie wynik dla n=6. */ | |
int fib(int n){ | |
return (n < 2 ? n : fib(n-1) + fib(n-2)); | |
}; | |
int main(){ | |
int n; | |
cin >> n; | |
for(int i=0; i<=n; i++){ | |
cout << i << "=>" << fib(i) << endl; | |
}; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<fstream> | |
using namespace std; | |
/* Grupa 1 | |
* Zadanie 4 | |
* Dana jest lista pudelek prostopadlosciennych zapisanych w pliku | |
* binarnym. Dobierz strukture do nastepujacych funkcjonalnosci: | |
* - Wypisz pudelka o najwiekszej objetosci | |
* - Wypisz pudelka do przechowywania gwozdzi. */ | |
enum Kategorie { Gwozdzie, Narzedzia, Spinacze }; | |
struct TPudelko{ | |
enum Kategorie zawartosc; | |
float x; | |
float y; | |
float z; | |
float objetosc(); | |
void wypisz(); | |
void wczytaj(); | |
}; | |
float TPudelko::objetosc(){ | |
return x*y*z; | |
}; | |
void TPudelko::wypisz(){ | |
cout << zawartosc << "(" << x << "x" << y << "x" << z << ")" << endl; | |
}; | |
void TPudelko::wczytaj(){ | |
int a; | |
cin >> a; | |
zawartosc = Kategorie(a); | |
cin >> x; | |
cin >> y; | |
cin >> z; | |
}; | |
void pokaz_max(){ | |
fstream plik("baza.dat", ios::in | ios::binary); | |
TPudelko pudelko; | |
float max; | |
bool first=true; | |
while(true){ | |
plik.read(reinterpret_cast<char*>(&pudelko), sizeof(pudelko)); | |
if(plik.eof()){ break;}; | |
if(first || max>pudelko.objetosc()){ | |
pudelko.wypisz(); | |
max=pudelko.objetosc(); | |
first=false; | |
} | |
}; | |
plik.seekp(0); | |
while(true){ | |
plik.read(reinterpret_cast<char*>(&pudelko), sizeof(pudelko)); | |
if(plik.eof()){ break;} | |
if(pudelko.objetosc() == max){ | |
pudelko.wypisz(); | |
} | |
}; | |
plik.close(); | |
}; | |
void pokaz_gwozdzie(){ | |
fstream plik("baza.dat", ios::in | ios::binary); | |
TPudelko pudelko; | |
while(true){ | |
plik.read(reinterpret_cast<char*>(&pudelko), sizeof(pudelko)); | |
if(plik.eof()) break; | |
if(pudelko.zawartosc==Gwozdzie){ | |
pudelko.wypisz(); | |
} | |
}; | |
plik.close(); | |
}; | |
/*void dopisz(){ | |
TPudelko pudelko; | |
pudelko.wczytaj(); | |
fstream plik("baza.dat", ios::out | ios::app); | |
plik.write(reinterpret_cast<char*>(&pudelko), sizeof(pudelko)); | |
plik.close(); | |
};*/ | |
void menu(){ | |
int choose; | |
do{ | |
cout << "1 - Pokaz najwieksze" << endl; | |
cout << "2 - Pokaz pudelka na gwozdzie" << endl; | |
//cout << "3 - Dopisz" << endl; | |
cout << "0 - Powrot" << endl; | |
cin >> choose; | |
switch(choose){ | |
case 1: | |
pokaz_max(); | |
break; | |
case 2: | |
pokaz_gwozdzie(); | |
break; | |
//case 3: | |
// dopisz(); | |
// break; | |
case 0: | |
cout << "Bye!"; | |
break; | |
default: | |
cout << "Podana opcja nie istnieje!"; | |
}; | |
}while(choose!=0); | |
}; | |
int main(){ | |
menu(); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
/* Grupa II | |
* Zadanie 1 | |
* Dany jest ciag n-elementowy liczb calkowitych. Napisz program | |
* wypisujacy wszystkie liczby majace pierwsza i ostatnia cyfre taka | |
* sama */ | |
bool warunek(int liczba){ | |
int pierwsza=liczba%10; | |
do{ | |
liczba/=10; | |
}while(liczba>10); | |
int ostatnia=liczba%10; | |
return (ostatnia==pierwsza); | |
}; | |
void akcja(){ | |
int liczba; | |
cout << "Podaj liczbe:"; cin >> liczba; | |
if(warunek(liczba)){ | |
cout << liczba << "spelnia zadany warunek" << endl; | |
}; | |
}; | |
void wczytaj(){ | |
int n; | |
cout << "Podaj n:"; cin >> n; | |
while(n>0){ | |
akcja(); | |
n--; | |
}; | |
}; | |
int main(){ | |
wczytaj(); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<cstdlib> | |
#include<ctime> | |
using namespace std; | |
/* Grupa II | |
* Zadanie 2 | |
* Dana jest tablica NxM liczb rzeczywistych. N i M sa nieparzyste. | |
* Napisz program, ktory oblicze sume liczb z tej tablicy w sposob | |
* wskazany na rysunku. */ | |
/* Od autora: Nie obsluguje prawidlowo przypadku, gdy N!=M */ | |
void wczytaj(int **T, int n, int m){ | |
for(int i=0; i<n; i++){ | |
for(int j=0; j<m; j++){ | |
T[i][j]=rand()%25; | |
}; | |
}; | |
}; | |
void wypisz(int **T, int n, int m){ | |
for(int i=0; i<n; i++){ | |
for(int j=0; j<m; j++){ | |
cout << "[" << T[i][j] << "]\t"; | |
}; | |
cout << endl; | |
}; | |
}; | |
void wypisz_rekord(int **T,int x,int y){ | |
cout << T[x][y] << "(" << x << "x" << y << ")" << endl; | |
}; | |
int oblicz(int **T, int n, int m){ | |
int x=n/2; | |
int y=n/2; | |
int suma = T[x][y]; | |
wypisz_rekord(T,x,y); | |
x--; | |
int j=1; | |
while(x>=0 && y>=0){ | |
cout << "---" << endl; | |
for(int end=y+j; y<end; y++){ // w dol | |
suma+=T[x][y]; | |
wypisz_rekord(T,x,y); | |
}; | |
cout << "---" << endl; | |
for(int end=x+j+1; x<end; x++){ // w prawo | |
suma+=T[x][y]; | |
wypisz_rekord(T,x,y); | |
}; | |
cout << "---" << endl; | |
for(int end=y-j-1; y>end; y--){ // w lewo | |
suma+=T[x][y]; | |
wypisz_rekord(T,x,y); | |
}; | |
cout << "---" << endl; | |
for(int end=x-j-2; x>end; x--){ // w gore | |
suma+=T[x][y]; | |
wypisz_rekord(T,x,y); | |
}; | |
cout << "======"; | |
}; | |
return suma; | |
}; | |
int main(){ | |
srand(time(NULL)); | |
int N; | |
cout << "Podaj N:"; | |
cin >> N; | |
int M; | |
cout << "Podaj M:"; | |
cin >> M; | |
int **T = new int*[N]; | |
for(int i=0; i<N; i++){ | |
T[i] = new int[M]; | |
}; | |
wczytaj(T, N,M); | |
wypisz(T, N, M); | |
cout << "Suma:" << oblicz(T, N, M); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
using namespace std; | |
/* Grupa 2 | |
* Zadanie 1 | |
* Oblicz n-ty wyraz ciagu fibonacciego. | |
* Wzor: f_n_=fib_n-1_ + fib_n-2_ f_0_ = 1 fib_1_=1 | |
* Wykonaj zapisany program krok po kroku. Jaki bedzie wynik dla n=5. */ | |
int fib(int n){ | |
return (n < 2 ? 1 : fib(n-1) + fib(n-2)); | |
}; | |
int main(){ | |
for(int i=0; i<=5; i++){ | |
cout << "fib(" << i << ") => " << fib(i) << endl; | |
}; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<fstream> | |
#include<cstring> | |
using namespace std; | |
struct TTowar{ | |
char nazwa[20]; | |
char dostawca[20]; | |
unsigned int ilosc; | |
float cena; | |
void wczytaj(); | |
}; | |
void TTowar::wczytaj(){ | |
cin >> nazwa; | |
cin >> dostawca; | |
cin >> ilosc; | |
cin >> cena; | |
}; | |
void dodaj(){ | |
fstream plik("baza2.dat", ios::out | ios::binary | ios::app); | |
TTowar rekord; | |
rekord.wczytaj(); | |
plik.write(reinterpret_cast<char*>(&rekord), sizeof(TTowar)); | |
plik.close(); | |
}; | |
int zapisz_rekordy(){ | |
int n=0; | |
fstream plik("baza2.dat", ios::in | ios::binary | ios::app); | |
fstream plik2; | |
TTowar rekord; | |
while(true){ | |
plik.read(reinterpret_cast<char*>(&rekord), sizeof(TTowar)); | |
if(plik.eof()) break; | |
plik2.open(rekord.dostawca, ios::binary | ios::out); | |
plik2 << rekord.nazwa << "\t" << rekord.cena << "zl\t" << rekord.ilosc << "szt." << endl; | |
plik2.close(); | |
n++; | |
}; | |
plik.close(); | |
return n; | |
}; | |
int index(char **T, int n, char dostawca[20]){ | |
for(int i=0; i<n;i++){ | |
if(strcmp(T[i], dostawca) == 0){ | |
return i; | |
} | |
}; | |
return -1; | |
}; | |
void zapisz_sumy(int n){ | |
fstream plik("baza.dat", ios::in | ios::binary | ios::app); | |
fstream plik2; | |
// Tworzymy tablice, tablice charow | |
int m=0; // liczba rekordow w tablicach sumy i dostawcy | |
float *sumy = new float[n]; | |
char **dostawcy = new char * [n]; | |
for(int i=0; i<n; i++){ | |
dostawcy[i] = new char [20]; | |
}; | |
// Wczytujemy rekordy do w/w tablic z odpowiednim sumowaniem | |
TTowar rekord; | |
while(true){ | |
plik.read(reinterpret_cast<char*>(&rekord), sizeof(TTowar)); | |
if(plik.eof()) break; | |
int pozycja = index(dostawcy, m, rekord.dostawca); | |
if(pozycja==(-1)){ // dopisujemy nowy | |
sumy[m] = 0; | |
dostawcy[m] = rekord.dostawca; | |
m++; | |
}else{ // aktualizujemy | |
sumy[pozycja]+=rekord.cena; | |
}; | |
n++; | |
}; | |
plik.close(); | |
for(int i=0; i<m; i++){ // Nie dziala | |
cout << "Zapisywanie dostawcy " << dostawcy[m] << endl; | |
plik2.open(dostawcy[m], ios::out | ios::app); | |
plik2 << "\t" << sumy[m] << "zl\t" << endl; | |
plik2.close(); | |
}; | |
//delete [] sumy; | |
//for(int i=0; i<n; i++){ | |
// delete [] dostawcy[i]; | |
//}; | |
//delete [] dostawcy; | |
}; | |
void zapisz_do_plikow(){ | |
int n=zapisz_rekordy(); | |
cout << "Rekordow w bazie danych " << n << endl; | |
zapisz_sumy(n); | |
}; | |
void menu(){ | |
int choose; | |
do{ | |
cout << "1 - dodaj" << endl; | |
cout << "2 - zapisz do plikow" << endl; | |
cout << "0 - koniec" << endl; | |
cin >> choose; | |
switch(choose){ | |
case 1: | |
dodaj(); | |
break; | |
case 2: | |
zapisz_do_plikow(); | |
break; | |
case 0: | |
cout << "Bye!" << endl; | |
default: | |
cout << "Nieznana akcja" << endl; | |
}; | |
}while(choose !=0); | |
}; | |
int main(){ | |
menu(); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<math.h> /* pow */ | |
using namespace std; | |
/* | |
* Grupa III | |
* Zadanie I | |
* Dany jest ciąg liczb całkowitych zakończony zerem. Napisz program, | |
* który wypisze te liczby dla których suma kwadratów cyfr >= od | |
* iloczynu cyfr. */ | |
int kwadraty(int liczba){ | |
int wynik=0; | |
do{ | |
wynik+=pow(liczba%10, 2); | |
liczba=liczba/10; | |
}while(liczba>0); | |
return wynik; | |
}; | |
int iloczyn(int liczba){ | |
int wynik=1; | |
do{ | |
wynik=wynik*(liczba%10); | |
liczba=liczba/10; | |
}while(liczba>0); | |
return wynik; | |
}; | |
int main(){ | |
int liczba; | |
do{ | |
cin >> liczba; | |
if(kwadraty(liczba)>=iloczyn(liczba)){ | |
cout << liczba << endl; | |
}; | |
}while(liczba != 0); | |
return 0; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<math.h> /* pow */ | |
#include<stdlib.h> | |
using namespace std; | |
/* | |
* Grupa III | |
* Zadanie 2 | |
* Dany jest ciag n-elementowy punktow 3-wymiarowych. Napisz program, | |
* który dla punktow znajdzie punkty. | |
* - Najbliższe (jak jest kilka takich, to podaj wszystkie). | |
* - Najdalsze (jak jest kilka takich, to podaj wszystkie). */ | |
struct TPunkt{ | |
int x; | |
int y; | |
int z; | |
void wczytaj(); | |
void wypisz(); | |
}; | |
void TPunkt::wczytaj(){ | |
x = rand()%50; | |
y = rand()%50; | |
z = rand()%50; | |
//cin >> x; | |
//cin >> y; | |
//cin >> z; | |
}; | |
void TPunkt::wypisz(){ | |
cout << "(" << x << " x " << y << " x " << z << ")"; | |
}; | |
int abs(int a){ | |
return (a >= 0 ? a : -a); | |
}; | |
float odleglosc(TPunkt a, TPunkt b){ | |
return sqrt(pow(abs(a.x-b.x), 2)+pow(abs(a.z-b.z), 2)+pow(abs(a.y-b.y), 2)); | |
}; | |
int main(){ | |
srand(5); | |
TPunkt *punkty; | |
int n; | |
cin >> n; | |
if(n<2){ | |
cout << "Minimum 2 punkty" << endl; | |
return 0; | |
}; | |
punkty = new TPunkt[n]; | |
for(int i=0; i<n; i++){ | |
punkty[i].wczytaj(); | |
punkty[i].wypisz(); | |
}; | |
cout << endl; | |
float min, max, odl; | |
for(int i=0; i<n; i++){ | |
cout << "Obliczenia dla punktu: "; | |
punkty[i].wypisz(); | |
cout << endl; | |
min=odleglosc(punkty[i], punkty[i+1%n]); | |
max=min; | |
for(int j=0; j<n; j++){ | |
if(i == j){ | |
continue; | |
}; | |
odl = odleglosc(punkty[i], punkty[j]); | |
min = min > odl ? odl : min; | |
max = max < odl ? odl : max; | |
}; | |
cout << "Minimalna odleglosc" << min << endl; | |
cout << "Maksymalna odleglosc" << max << endl; | |
cout << "Najblizsze dla punktu: "; | |
for(int j=0; j<n; j++){ | |
if(i == j){ | |
continue; | |
}; | |
odl = odleglosc(punkty[i], punkty[j]); | |
if(odl == min) punkty[j].wypisz(); | |
}; | |
cout << endl; | |
cout << "Najdalsze dla punktu: "; // Hmm... | |
for(int j=0; j<n; j++){ | |
if(i == j){ | |
continue; | |
}; | |
odl = odleglosc(punkty[i], punkty[j]); | |
if(odl == max){ punkty[j].wypisz(); }; | |
}; | |
cout << endl << endl; | |
}; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
#include<math.h> | |
using namespace std; | |
/* Grupa III | |
* Zadanie 3 | |
* Napisz program, ktory z danego ciagu liczb rzeczywistych | |
* zakonczonego 0 bedzie szukal maksymalnej liczy, ktora ma identyczna | |
* czesc calkowita i czesc ulamkowa. Np. 123.123 spelnia ten warunek, | |
* a 123.321 nie spelnia. */ | |
int ulamkowa(double liczba){ | |
double calkowita; | |
double ulamkowa = modf(liczba, &calkowita); | |
do{ | |
ulamkowa*=10; | |
}while((int)ulamkowa%10!=0); | |
cout << ulamkowa/10; | |
return ulamkowa/10; | |
}; | |
void operacja(){ | |
double liczba, max; | |
bool first = true; | |
do{ | |
cin >> liczba; | |
if(first) max = liczba; | |
if((int)liczba == ulamkowa(liczba) && | |
(first || max > liczba)){ | |
max = liczba; | |
}; | |
first=false; | |
}while(liczba!=0); | |
cout << "Maksymalna liczba spelniajaca kryterium wynosi: " << max; | |
}; | |
int main(){ | |
operacja(); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <stdio.h> | |
#include <fstream> | |
#include <string.h> | |
using namespace std; | |
/* Grupa III | |
* Zadanie 4 | |
* Dana jest lista ksiazek o strukturze: autor, tytul, wydawnictwo, rok | |
* wydania zapisana w pliku binarnym. Napisz program, ktory umozliwi: | |
* - Usuniecie ksiazki | |
* - Wyszukanie ksiazek o zadanym autorze lub tytule */ | |
struct TKsiazka{ | |
char tytul[20]; | |
char autor[20]; | |
char wydawnictwo[20]; | |
int rok; | |
void wczytaj(); | |
void wypisz(); | |
}; | |
void TKsiazka::wczytaj(){ | |
cin >> tytul; | |
cin >> autor; | |
cin >> wydawnictwo; | |
cin >> rok; | |
}; | |
void TKsiazka::wypisz(){ | |
cout << tytul << "\t"; | |
cout << autor << "\t"; | |
cout << wydawnictwo << "\t"; | |
cout << rok; | |
}; | |
void usun_menu(); | |
void usun(int numer); | |
void wyszukaj_menu(); | |
void wyszukaj(int parametr, char klucz[]); | |
void wyszukaj(int parametr); | |
void dodaj_menu(); | |
void menu(); | |
int main(){ | |
menu(); | |
}; | |
void menu(){ | |
int choose; | |
do{ | |
cout << "1 - Usun pozycje" << endl; | |
cout << "2 - Wyszukaj pozycje" << endl; | |
cout << "3 - Dodaj pozycje" << endl; | |
cout << "0 - Powrot" << endl; | |
cin >> choose; | |
switch(choose){ | |
case 1: | |
usun_menu(); | |
break; | |
case 2: | |
wyszukaj_menu(); | |
break; | |
case 3: | |
dodaj_menu(); | |
break; | |
case 0: | |
cout << "Bye"; | |
break; | |
default: | |
cout << "Unknown action. Try again!" << endl; | |
}; | |
}while(choose!=0); | |
}; | |
void usun_menu(){ | |
wyszukaj(3); | |
cout << "Podaj numer:"; | |
int liczba; | |
cin >> liczba; | |
usun(liczba); | |
}; | |
void usun(int numer){ | |
fstream plik("baza.dat", ios::in | ios::binary); | |
fstream plik_tmp("baza_tmp.dat", ios::out | ios::binary); | |
TKsiazka pozycja; | |
int i=1; | |
while(true){ | |
plik.read(reinterpret_cast<char*>(&pozycja), sizeof(TKsiazka)); | |
if(plik.eof()) break; | |
if(i == numer) continue; | |
plik_tmp.write(reinterpret_cast<char*>(&pozycja), sizeof(TKsiazka)); | |
}; | |
plik.close(); | |
plik_tmp.close(); | |
remove("baza.dat"); | |
rename("baza_tmp.dat", "baza.dat"); | |
}; | |
void wyszukaj_menu(){ | |
int choose; | |
char klucz[20]; | |
do{ | |
cout << "1 - wyszukaj po tytule" << endl; | |
cout << "2 - wyszukaj po autorze" << endl; | |
cout << "3 - wszystkie" << endl; | |
cout << "0 - powrot" << endl; | |
cin >> choose; | |
switch(choose){ | |
case 1: | |
case 2: | |
cout << "Podaj slowo kluczowe: "; | |
cin >> klucz; | |
case 3: | |
wyszukaj(choose, klucz); | |
break; | |
case 0: | |
cout << "Bye!"; | |
break; | |
default: | |
cout << "Unknown action. Try again!" << endl; | |
}; | |
}while(choose!=0); | |
}; | |
void wyszukaj(int parametr){ | |
char klucz[1]; | |
wyszukaj(parametr, klucz); | |
}; | |
void wyszukaj(int parametr, char klucz[]){ | |
fstream plik("baza.dat", ios::in | ios::binary); | |
TKsiazka pozycja; | |
int i=1; | |
cout << "ID\tTytul\tAutor\tWydawnictwo\tRok" << endl; | |
while(true){ | |
plik.read(reinterpret_cast<char*>(&pozycja), sizeof(TKsiazka)); | |
if(plik.eof()) break; | |
if((parametr == 3) || | |
(parametr == 1 && strcmp(pozycja.tytul, klucz) == 0) || | |
(parametr == 2 && strcmp(pozycja.autor, klucz) == 0)){ | |
cout << i << "\t"; | |
pozycja.wypisz(); | |
cout << endl; | |
}; | |
}; | |
}; | |
void dodaj_menu(){ | |
TKsiazka pozycja; | |
pozycja.wczytaj(); | |
cout << "Wczytano: "; | |
pozycja.wypisz(); | |
fstream plik("baza.dat", ios::app | ios::out); | |
plik.write(reinterpret_cast<char*>(&pozycja), sizeof(TKsiazka)); | |
plik.close(); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment