TEKST zarówno abc jak i 10111


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;

 }

LICZBY


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;

 }