Zaloguj się

View Full Version : C++ zadanie.



Myst
23-04-2010, 22:52
Witam może ktoś mi pomóc napisać program w C++ (dev c++). Polega ono na wczytaniu dwóch liczb z przedziału obojętnie jakiego <a,b>. I ma wypisywać wszystkie liczby całkowite z tego przedziału. I należy użyć jednej funkcji. Jakby co to takie proste komendy użyć typu: if,while, do while itp. Nic trudniejszego bo jeszcze nie mieliśmy. Za program pójdzie repucik :cool:

party starter
24-04-2010, 00:45
nie mam deva c++ i dawno nie pisalem w c ale na szybko przyszlo mi do glowy cos takiego :
int i ; (pierwsza liczba)
int j ; (druga liczba)
cin>> i ;
cin >> j;

if (i>j) cout>>"w przedziale nie ma nic" else
if (i==j) cout>>"i=j,w przedziale nie ma nic" else
do (cout>>i ; i++ ) while (i!=j) ;

sry jak beda jakies bledy w kodzie, ale powinienes domyslic sie sensu programu.

Akananto
24-04-2010, 02:47
Witam może ktoś mi pomóc napisać program w C++ (dev c++). Polega ono na wczytaniu dwóch liczb z przedziału obojętnie jakiego <a,b>. I ma wypisywać wszystkie liczby całkowite z tego przedziału. I należy użyć jednej funkcji. Jakby co to takie proste komendy użyć typu: if,while, do while itp. Nic trudniejszego bo jeszcze nie mieliśmy. Za program pójdzie repucik :cool:

Nie posiadam kompilatora, ale polecimy na ciemno


#include <conio.h>
#include <iostream.h>
int main ()
{
int a,b,i;
cout << "Podaj 2 liczby calkowite" << endl;
cin >> a;
cin >>b;
for(i=a;i<b+1;i++) cout <<i<< endl;
getch();
return 0;
}

Teraz tak, to jest prosta wersja, nie wiem na jakim poziomie tam w szkole jestes.


#include <conio.h>
#include <iostream.h>
int main ()
{
int a,b,i;
cout << "Podaj 2 liczby calkowite" << endl;
cin >> a;
cin >>b;
if (a==b) cout << "A rowna sie B" ;
else for(i=a;i<b+1;i++) cout <<i<< endl;
getch();
return 0;
}

Tutaj masz z ifem, wrazie jakby kogoś pazurki swędziały..
Powinno smigac, jezeli chodzi o reputa - nie dzięki :)

Myst
24-04-2010, 10:02
Ładnie napisane, ale jest jeden mały problem. Gdy podam a=5, b=2 to buguje program. Bo też program ma ustawiać i sprawdzać która z liczb jest mniejsza i potem wypisywać po kolei.

Ps. Co to za biblioteka conio? i czemu dodaje się .h na końcu? Bo ja używam tylko <iostream> i <cstdio>.

AAAAAA jeszcze zapomniałem, że można podać liczbę np. 3.5 itp. Tylko wtedy ma wypisywać tylko całkowite, ale też po przecinku liczby można wpisywać jako a i b.

party starter
24-04-2010, 11:05
.h to jakas biblioteka. Sa tam chyba zdefiniowane funkcje zebys za kazdym razem nie musial ich deklarowac i pisac w calosci w programie. Te 2 ify co podalem wczesniej powinny rozwiazac probelm a>=b. Mozesz tez zabkolokowac mozliwosc wpisania tego robiac na starcie petle typu wpisuj i,j dopki i<j . Jak chcesz miec liczby z przecinkami to deklarujesz zmienne typu double , pozniej dajesz nowe zmnienne :

double i
...
int x
x=floor(i)

i masz liczbe zaokraglana w dol. Funkcja floor jest chyba w bibliotece math.h

Akananto
24-04-2010, 12:49
Ładnie napisane, ale jest jeden mały problem. Gdy podam a=5, b=2 to buguje program. Bo też program ma ustawiać i sprawdzać która z liczb jest mniejsza i potem wypisywać po kolei.

#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
int a,b,i;
do {
cout << "Podaj 2 liczby calkowite, pamietaj ze A musi byc mniejsze niz B" << endl;
cin >> a;
cin >>b;

if (a==b) cout << "A rowna sie B" ;
else for(i=a;i<b+1;i++) cout <<i << " " ;
} while(a>b);
getch();

return 0;
}
lub chodziło ci o to rozwiązanie (?)


#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
int a,b,i;

cout << "Podaj 2 liczby calkowite, pamietaj ze A musi byc mniejsze niz B" << endl;
cin >> a;
cin >>b;

if (a==b) cout << "A rowna sie B" ;
if (a>b) for(i=b;i<a+1;i++) cout <<i << " " ;
if (a<b) for(i=a;i<b+1;i++) cout <<i << " " ;


getch();

return 0;
}



Ps. Co to za biblioteka conio? i czemu dodaje się .h na końcu? Bo ja używam tylko <iostream> i <cstdio>.


Conio jest biblioteka odpowiedzialna za getch(), czyli program nam sie nie zamknie tylko poczeka na zakonczenie.


AAAAAA jeszcze zapomniałem, że można podać liczbę np. 3.5 itp. Tylko wtedy ma wypisywać tylko całkowite, ale też po przecinku liczby można wpisywać jako a i b.

Tej czesci nie rozumiem, w sensie ze napisałes to tak chaotycznie, ze dziekuje.Napiszesz to ładnie, to ci to zrobie :)

Myst
24-04-2010, 13:31
Oki już ładnie piszę. Czyli tak program każe mi wpisać dwie liczby. No i liczby nie muszą być całkowite, ale mogą mieć też przecinek np. 3 lub 3.5 Chodzi o to, że jak podam np. a=3.5, b=5.6, to ma wypisywać liczby całkowite z tego przedziału <3.5;5.6>, czyli 4,5.

Akananto
24-04-2010, 14:55
Oki już ładnie piszę. Czyli tak program każe mi wpisać dwie liczby. No i liczby nie muszą być całkowite, ale mogą mieć też przecinek np. 3 lub 3.5 Chodzi o to, że jak podam np. a=3.5, b=5.6, to ma wypisywać liczby całkowite z tego przedziału <3.5;5.6>, czyli 4,5.

Teraz tak, z racji ze mam linuxa napisałem ci to tak, aby na winshicie działało:)



#include <cstdlib>
#include <iostream>

#ifdef WIN32
#include <conio.h>
#endif

int main()
{
double a, b = 0;

std::cout << "Podaj 2 liczby calkowite. Nie moga byc rowne." << std::endl;
std::cin >> a;
std::cin >> b;

if (a == b){
std::cout << "A rowna sie B" << std::endl;
}
else if (a > b){
for(int i = a; i >= b; i--){
std::cout << i << " ";
}
}
else if (a < b){
for(int i = a; i <= b; i++){
std::cout << i << " ";
}
}

#ifdef WIN32
getch();
#else
std::cin.get();
#endif
return 0;
}

Myst
24-04-2010, 15:58
No fajnie działa, ale mam pytanko czy możesz poprawić to, że jak wpiszę a=2, b=1 to najpierw pisało 1,2 w tej kolejności, a nie 2,1. I drugi gdy wpiszę a=3.54, b=10 to wpisuje mi 3,4 ... 10. Tak nie powinien robić. bo 3 nie należy do zbioru i powinien zaokrąglać w górę.

Ps. Możesz dać 1 funkcje też z tym? Bo mamy też wykorzystać funkcję. No, ale i tak dziękuje Ci bardzo i to bardzo :D

Akananto
24-04-2010, 16:29
#include <cstdlib>
#include <iostream>

#ifdef WIN32
#include <conio.h>
#endif

int main()
{
double a, b = 0;

std::cout << "Podaj 2 liczby calkowite. Nie moga byc rowne." << std::endl;
std::cin >> a;
std::cin >> b;

if (a == b){ std::cout << "A rowna sie B" << std::endl; } else if (a > b){ for(int i = b; i <= a; i++){ std::cout << i << " "; } } else if (a < b){ for(int i = a; i <= b; i++){ std::cout << i << " "; } }

else if (a > b){ for(int i = b; i <= a; i++){

#ifdef WIN32
getch();
#else
std::cin.get();
#endif
return 0;
}

Śmiga?

Myst
24-04-2010, 18:35
Mam już program zrobiony, ale mam problem gdy wpisuje 4.5 llub inną po przecinku to mi zaokrągla w dół co zrobić aby w góre mi zaokrąglał?


#include <iostream>
#include <cstdio>

using namespace std;


int main()
{
int i=0;
double a=0,b=0;
cout <<"Podaj pierwsza liczbe: ";
cin >>a;
cout <<"Podaj druga liczbe: ";
cin >>b;

if (a<=b)
{
for(i=a;i<b+1;i++) cout<<i<< " ";
}
else for(i=b;i<a+1;i++) cout<<i<< " ";





cin.ignore();
getchar();
return 0;
}

@edit
Dobra już sobie poradziłem. Można zamknąć temat.

@Akananto
Spoko i tak dziękuje Tobie i to bardzo :)

Akananto
25-04-2010, 06:57
Sry, nie byłem w stanie wczoraj włączyc kompa, a co dopiero ci odpisac