Przykład 1
//*************************************************************************
// PROGRAM ZNAJDUJE DLUGOSC NAJDLUZSZEGO I NAJKROTSZEGO ANAGRAMU
// - anagramy to wyrazy tej samej dlugosci i skladajace sie z tych samych liter
// - np. okno i noko, zez i ezz, piniki i iiipnk
// - wykorzystuje jednoczesne znajdowanie max i min
//*************************************************************************
// UWAGA przypominam o sprawdzeniu pliku anagram.txt i poprawnym go zapisaniu - kursor ustawic -zeby nie bylo pustego wiersza bo zle wyniki
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
string a; // zmienna na wczytany wyraz ze strumienia danych czyli z pliku
string b;
int c; // zmienna na dlugosc wyrazu a
int d; // zmienna na dlugosc wyrazu b
int max=0; // zmienna na najdluzszy anagram
int min=0; // zmienna na najkrotszy anagram
ifstream odczyt("anagram.txt");
ofstream zapis("dlugosci_anagram.txt");
odczyt>>a; // wczytuje pierwszy wyraz z pliku
c=a.size(); // zmiennej c przypisuje dlugosc wyrazu a
max=c; // "pierwszy wyraz ma max dlugosc" i jednoczesnie
min=c; // "pierwszy wyraz ma min dlugosc"
while(!odczyt.eof()) // dopóki nieprawda, ze natrafilismy na koniec pliku
{
odczyt>>b; // wczytuje drugi wyraz z pliku
d=b.size();
if (d>max)
max=d;
if (d<min)
min=d;
}
zapis<< max<<endl<<min; // zapisuje max oraz min dlugosc tekstu do pliku
odczyt.close();
zapis.close();
return 0;
}
Przykład 1 ale bez zapisu liczby w systemie heksadecymalnym
//*************************************************************************
// PROGRAM WCZYTUJE Z KLAWIATURY PO JEDNEJ LICZBIE Z CiĄGU LICZB.
// ILOŚĆ WCZYTYWANYCH LICZB USTALA UŻYTKOWNIK
// - znajduje najmniejszą wartosc liczby (minimum) z wczytanego ciągu liczb
// - oblicza ile razy minimum wystapiło we wczytanym ciagu liczb
// - wykorzystuje pętlę for..to
//*************************************************************************
#include<iostream>
using namespace std;
int main()
{
int ile; // zmienna na ilosc wczytywanych liczb
int a, b; // a- zmienna na pierwsza liczbe,
// ktora jest jednoczesnie pierwszym min ciagu
// b- zmienna na nastepne liczby z ciagu liczb
int min; // zmienna na minimum ciagu
int l_min=1; // zmienna, w której przechowujemy aktualna liczbe wystąpień // minimum i jest zainicjowana wartoscia 1,
// bo pierwsza wczytana liczba, czyli a, jest od razu aktualnym minimum
cout<<"Ile liczb? ";
cin>>ile;
cout<<"Pierwsza liczba ";
cin>>a;
min=a; // przypisanie minimum wartosci zmiennej a
for(int i=0; i<ile-1; i++) // i<ile-1 poniewaz pierwsza liczba z ciagu,
//czyli a, juz weszla do programu
{
cout<<"Nastepna liczba ";
cin>>b;
if (b==min) // czy nastepna liczba jest równa co do wartosci minimum?
// to jest pierwsze i główne zapytanie
l_min=l_min+1;
if(b<min)
{
min=b;
l_min=1; // jesli zmienia sie wartosc minimum
// to licznik minimum ustawiamy na 1
// bo od nowa liczymy liczbe wystapień tego nowego minimum
}
}
cout<<endl<<endl<<"minimum wystapilo w ciagu "<<l_min<<" razy"<<endl;
cout<<"min="<<min;
cin.get();
cin.ignore();
return 0;
}
Przykład 2
//*************************************************************************
// PROGRAM ZNALEZIENIA MAX i MIN Z SUMY CYFR LICZBY. LICZBY W PLIKU SA
// MNIEJSZE OD MILIARDA
// - odczytuje po jednej liczbie z pliku
// - dokonuje na niej obliczen matematycznych czyli oblicza jej sume cyfr
// - znajduje mni i max sumy cyfr z wczytanych liczb
// - zapisuje wynik obliczen, czyli liczbe o min sumie cyfr i liczbe o max sumie cyfr
//*************************************************************************
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
string a; // zmienna na wczytana liczbe ze strumienia danych czyli z pliku
// uzylam stringa bo z df string jest zaimplementowany jako tablica jednowymiarowa
// czyli poszczegolne cyfry wczytanej liczby beda w oddzielnych komorkach pamieci
// i na dodatek jest to tablica dynamiczna
int max_suma=0; // zmienna na max sume cyfr
int min_suma=81; //zmienna na min sume cyfr,
// przyjelam 81 bo suma cyfr najwiekszej liczby 999999999 to 9x9
int cyfra; // zmienna pomocnicza do konwersji typow z char na int
int suma=0; // zmienna na sume cyfr
string max; // zmienna na liczbe o max_sumie cyfr
string min; // zmienna na liczbe o min_sumie cyfr
ifstream odczyt("cyfry.txt");
ofstream zapis("max_min.txt");
while(!odczyt.eof())
{
odczyt>>a; //czyta pierwsza liczbe z pliku i umieszcza w tablicy a,
for (int i=0; i<a.size(); i++)
// UWAGA: wczytane z pliku cyfry sa znakami - to tekst- dlatego
// trzeba je zamienic na cyfry, zamiana taka nazywa się -konwersja typu-
// wczytane znaki maja takie wartosci jak w kodzie ASCII np. 0=48, 1=49, 2=50 itd
// gdyby nie zrobic konwersji to wynik bylby niepoprawny
// bo suma cyfr bylaby w kodzie ASCII, czyli wieksza
// w tym zadaniu chodzi o podanie liczb, dla ktorych suma jest max lub min i moznaby rozwiazac go bez konwersji typu
// ale to bedzie edukacyjne :-)
{
cyfra = a[i]- '0' ; // moge tez zapisac cyfra =a[i] - 48 bo 0 ma wartosc 48 w ASCII
suma= suma+cyfra; // tutaj oblicza sume cyfr wczytanej liczby
}
if (suma>max_suma)
{
max_suma=suma; // sprawdza czy suma cyfr jest max i gdy tak
// to zapamietuje w komorce max wartosc tej liczby
max=a;
}
if (suma<min_suma)
{
min_suma=suma; // sprawdza czy suma cyfr jest min i gdy tak
// to zapamietuje w komorce min wartosc tej liczby
min=a;
}
suma=0; // zeruje komorke pamieci sumy
// aby obliczyc sume cyfr nastepnej wczytanej liczby
}
zapis<<max<<endl<<min; // zapisuje liczbe o najwiekszej sumie cyfr
// i liczbe o najmniejszej sumie cyfr
odczyt.close();
zapis.close();
return 0;
}