Dzisiaj zajmiemy się tak jak powiedziałem podpunktami a i b.
Tak więc przejdźmy do podpunktu a:
Mamy za zadanie wypisać ile liczb jest parzystych, prosta sprawa wystarczy sprawdzać czy liczba wczytana dzieli się przez 2, jeżeli tak zwiększamy parzyste o 1.
Zaczniemy już pisać program w wersji do kompilacji, pamiętajmy, że musimy dane wczytać z pliku cyfry.txt oraz zapisać je do pliku zadanie4.txt nie musimy tutaj kombinować z fstream'em wystarczy wejść w wiersz poleceń(start->uruchom->cmd) wejść do katalogu z naszym programem i plikami i napisać frazę:
cyfry.txt < nazwa_programu.exe > zadanie4.txtAha wszystkie programy wykonuje w środowisku CodeBlock.
Kod programu:
#include<iostream>To byłoby na tyle w podpunkcie a.
using namespace std;
int main()
{
unsigned long int liczba,parzyste=0; //deklarujemy zmienne oraz dla "spokojności" zerujemy}
for(int i=0;i<1000;i++) //wczytujemy liczby z pliku, pętla wykona się 1000 razy gdyż liczymy od 0
{
cin >> liczba;}
if(liczba%2==0)parzyste++ //sprawdzamy czy zmienna z dzielenia liczby przez 2 wynosi 0 jeżeli tak to parzyste zwiększają się o jeden.
cout <<"a " <<parzyste <<endl; //wypisujemy wynik poprzedzając go literką z podpunktu
W podpunkcie b mamy wypisać liczbę która posiada największą oraz najmniejszą sumę cyfr..
tak więc dopisujemy zmienną punktB[1] którą stworzyliśmy w poprzedniej części oraz zmienną suma,najwieksza i najmniejsza:
unsigned long int liczba,parzyste=0,punktB[1],suma=0,najwieksza=0,najmniejsza=0;dodatkowo musimy wyzerować tablicę:
punktB[0]=0;Aby znaleźć która z liczb ma największą sumę cyfr musimy znaleźć sumę. Wystarczy dodać 2 zmienne a i b, dzielić zmienną b która będzie przechowywać podzieloną liczbę oraz wyciągać resztę z dzielenia przez 10 ze zmiennej a. Zobaczmy jak to działa:
punktB[1]=0;
mamy liczbę 1234
zmienna a przyjmuje wartość liczby czyli 1234
dzielimy ją dopóki nie osiągnie wartości 0
czyli
zmienna b równa się zmienna a dzielona przez 10 czyli 123,4 a ponieważ typ int przechowuje tylko zmienne całkowite otrzymamy 123
wyciągamy resztę z dzielenia z a czyli 1234%10=4 (a=4)
dodajemy otrzymany wynik do sumy suma+=a czyli 4
zmienna a przyjmuje wartość zmiennej b czyli a=123
i tak powtarzamy aż do 0
czyli nasz kod programu wygląda na razie tak:
int main()Teraz wystarczy w pętli for sprawdzać czy otrzymana suma jest większa od zmiennej najwieksza lub mniejsza od najmniejsza jeżeli jest to podmieniamy najwieksza lub najwieksza na sume:
{
unsigned long int liczba,parzyste=0,punktB[1],suma=0;//dodajemy nowe zmienne}
for(int i=0;i<1000;i++) //wczytujemy liczby z pliku
{
cin >> liczba;}
if(liczba%2==0)parzyste++;
while(a>0)
{
b=a/10;}
a%=10;
suma+=a;
a=b;
cout <<"a " <<parzyste <<endl;
if(suma>najwieksza){punktB[0]=liczba;najwieksza=suma;}I tak oto zakończyliśmy podpunkt b.
else if(suma<najmniejsza){punktB[1]=liczba;najmniejsza=suma;}
Kod programu:
#include<iostream>W kolejnej części zajmiemy się podpunktem c.
using namespace std;
int main()
{
unsigned long int liczba,parzyste=0,punktB[1],suma=0,a=0,b=0,najwieksza=0,najmniejsza=0;//dodajemy nowe zmienne
punktB[0]=0;
punktB[1]=0;
for(int i=0;i<=1000;i++) //wczytujemy liczby z pliku
{
cin >> liczba;
if(liczba%2==0)parzyste++;
a=liczba;
while(a>0)
{
b=a/10;
a%=10;
suma+=a;
a=b;
}
if(i==0){najmniejsza=suma;punktB[1]=liczba;}
if(suma>=najwieksza){punktB[0]=liczba;najwieksza=suma;}
else if(suma<najmniejsza){punktB[1]=liczba;najmniejsza=suma;}
suma=0;
}
cout << "a " << parzyste << endl;
cout << "b " << punktB[0] << " " << punktB[1] << endl;
return 0;
}
Brak komentarzy:
Prześlij komentarz