Tag Archives: C++

Naprawione – problem z funkcją losowania w C++

Na zajęciach programowania, napotkaliśmy na problem który wygląda tak : po wylosowaniu liczb, cały czas zostawały one na poziomie tysięcy/dziesiatek a zmieniały się tylko ich końcówki.

Wyjście:

1346, 1368, 1356 …

Z problemem sobie poradziłem korzystając z biblotek dla funkcji srand. Sprawa tak prosta że az głupia, po prostu zapomnielismy o deklaracji bibloteki <time.h> która odpowiada za obsluge time(null), czyli nasz rdzeń losowania :).

 

Przykładowy program na którym testowałem funkcje losowania :

 

 

 
    #include<iostream>
    #include <time.h>
 
    using namespace std;
 
    int main() {
    srand ( time(NULL) );
 
    for ( int i=1; i<10; i++ ){
 
    cout<<endl<<"Proba: "<<i<<endl<<endl;
    cout<<rand()<<'\n';
    cout<<rand()<<'\n';
    cout<<rand()<<'\n';
 
 
    }
 
        system("PAUSE");
        return 0;
    }

C++: Skrypt wyświetlania czasu lokalnego.

Wymyśliłem sobie projekt, wykonanie skryptu który sprawdza czas, a następnie dodaje lub odejmuje godziny w zależności od państwa które wprowadzimy. Brzmi ciekawie, tylko jak sie do tego zabrać :P
Na samym już początku trzeba obmyśleć konstrukcje aplikacji, pomyślalem i doszedłem do tego.
Pierwsza opcja sprawdzenie czasu lokalnego.

Sam kod:

#include <conio.h>
#include <iostream>
#include<time.h>
 
using namespace std;
 
int main ()
{
    time_t czas;
    struct tm * data;
    char godzina [80];
    time (&czas);
    data =localtime (&czas);
    strftime (godzina,80,"Teraz jest: %H:%M:%S.",data);
    cout<<godzina;
    getch();
    return 0;
}

Tak jak już pisałem skrypt sprawdza lokalny czas, i zapisuje w wyznaczonym formacie mianowicie godzina, minuty, sekundy.

#include<conio.h>

Jak widzicie została dodana nowa bibloteka, użyłem jej specjalnie po to by użyć: getch()
Po użyciu tego znacznika, program nie zamknie się. Inną opcją jest użycie: system(“pause”)

#include<time.h>

Opis bibloteki, oraz znaczników które można użyć znajduje sie pod tym linkiem.
To był pierwszy krok do wykonania mojego projektu :) – Sprawdzenie czasu lokalnego.
Następnym krokiem będzie odczytanie informacji z pliku.

C++: Pętla while, while do.

Teraz coś o pętli w języku c++.
Pętle wykorzystujemy do wykonywania instrukcji póki warunek while, nie zostanie spełniony :)
W języki c++, jak i innych mamy pętle for, while, while do ..
Postaram się co nieco powiedzieć o while, while do.
Do czego potrzebna jest nam pętla ?
Do wykonywania wszelakich czynności które muszą być wykonywane, dopóki nie zostany przez nas warunek przejścia dalej.Chociażby Wpisz hasło -&AMP;GT; wpiszemy hasło źle, rowna sie to temu że musimy je wpisać ponownie, lecz gdy wpiszemy je poprawnie, przechodzimy dalej. To taka moja teoria :DD
Jak wygląda pętla while ?

#include<iostream>
using namespace std;
int main ()
{
instrukcja;
while ( warunek )
..
return 0;
}

Tak można opisać pętle while. Skrypt będzie wykonywał zadaną instrukcje, póki nie zostanie określony warunek while.
Bardzo podobnie while do

#include<iostream>
using namespace std;
int main ()
{
do
instrukcja;
while ( warunek )
..
return 0;
}

Jak widać while do, różni sie tylko tym, iż instrukcje wpisujemy poprzedzając ją “do”. ( Wykonywanie )

A teraz taki program na obliczenie średniej arytmetycznej:

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
  int ilosc=0;
  float srednia=0;
  float ocena;
  do
  {
    cout<<"Podaj ocene (0 konczy wprowadzanie): ";
    cin>>ocena;
    if(ocena>0)
    {
      srednia+=ocena;
      ilosc+=1;
    }
  }while(ocena!=0);
  if(ilosc>0) srednia/=ilosc;
  cout<<"Wprowadziles "<<ilosc<<" ocen"<<endl;
  cout<<"Srednia ocen to: "<<srednia<<endl;
  getch();
  return(0);
}

Opis programu:

Wpisujemy zmienną czyli ocene, skrypt to odczytuje i sprawdza teraz warunek ( if ) , jeśli ocena jest większa od 0 wtedy przechodzi dalej. Chodzi tutaj oczywiście o to by po wpisaniu 0, nasz skrypt sie zatrzymał.
Następnie zawiera instrukcja, dotyczące działania( obliczenia ). Dodatkowo cały blok, został oznaczony dodatkowym while. ( ocena!=0 ) Chodzi tutaj o to by “ocena ‘nie’ równa 0″ Dopóki ocena nie jest równa 0, cały blok będzie powtarzany. Dalej nam to możliwośc wpisywania kilku ocen.
Ostatni blok dotyczy działania ( średnia ), i wyświetlenie nam tego na monitorze.

W tym skrypcie została dodana nowa bibloteka mianowicie: #include<conio.h>
Polecam zapoznanie sie z tą bibloteką, w tym linku znajduje się opis bibloteki.

C++: Instrukcja Warunkowa if – else

Zaczynam podstawy C++,  i obiecałem pisać coś o programowaniu.

Napisze coś o instrukcjach warunkowych. Czyli:

Jeśli warunek zostanie spełniony, zostanie wykonany blok1, jeśli warunek nie zostanie spełniony zostanie wykonany blok2. Całkiem fajna sprawa :)

if( <warunek> )
{//blok1}
else
{//blok2}

A teraz taki kod:

#include<iostream>
 
using namespace std;
 
int main ()
 
{
 
int x;
 
cout <<”Podaj liczbę całkowitą:<> x;
 
if ( x & 1 ) cout << “Liczba nieparzysta.\t”;
 
else cout << “Liczba parzysta.\t”;
return 0;
}

Kod sprawdza czy liczba jest parzysta/nieparzysta.  Wpisujemy interesującą nas liczbe, a skrypt sprawdza czy jest to liczba parzysta, nieparzysta poprzez sprawdzenie warunku.

Operator Warunkowy

Bardzo podobny do instrukcji if-else, jednak wygląda to tak:

( <warunek> ) ? <wyrażenie1> : <wyrażenie2>;

Jeżeli spełniony jest <warunek> to operator zwróci wartość <wyrażenia1>, w przeciwnym wypadku wartość <wyrażenia2>.

Sam Operator Warunkowy, pozwala nam uprościć kod, przez zredukowanie if-else :)

A teraz kod:

#include <iostream>
 
using namespace std;
 
int main()
 
{
 
int x;
 
cout << “Podaj liczbę całkowitą:<< endl;
 
cin >> x;
 
cout << ( (x & 1) ? “Liczba nieparzysta.” : “Liczba parzysta.”) << endl;
 
return 0;
 
}

Jeżeli warunek jest spełniony, to dostaniemy info o liczbie nieparzystej,  w przyciwnym wypadku o liczbie parzystej.

A wygląda to tak:

C++_Projekt1

Ciekawa zabawka :P To na tyle z instrukcji warunkowej if – else, i Operatora Warunkowego.

Wiele rzeczy dla chętnych, jest napisane w poradnikach. Do których polecam zajrzeć, w przypadku innych pytań :)