[C++]Maksimum z wczytanych liczb

karolynqaa
Użytkownik
Użytkownik
Posty: 200
Rejestracja: 21 lis 2012, o 18:21
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 42 razy

[C++]Maksimum z wczytanych liczb

Post autor: karolynqaa »

Mam do napisania program, który czyta z wejścia liczby całkowite aż do napotkania liczby ujemnej, a nastepnie zwraca najwiekszy element z wczytywanych liczb (z pominięciem ostatniej, ujemnej liczby)
i do tego pierwiastek z najwiekszej liczby oraz od 1 do max wypisac wszytskie liczby pierwsze.

Nie bardzo wiem jak to zrobic. To juz jest chyba dla mnie za trudne :/
Ostatnio zmieniony 20 mar 2013, o 23:36 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
rafalpw
Użytkownik
Użytkownik
Posty: 2203
Rejestracja: 15 lis 2012, o 00:13
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 43 razy
Pomógł: 526 razy

[C++]Maksimum z wczytanych liczb

Post autor: rafalpw »

karolynqaa pisze:od 1 do max wypisac wszytskie liczby pierwsze.
Wszystkie, które zostały wczytane, czy wszystkie liczby pierwsze, które są mniejsze od \(\displaystyle{ \max}\) z wczytanych liczb?
witekkq
Użytkownik
Użytkownik
Posty: 145
Rejestracja: 16 lis 2007, o 09:06
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 2 razy
Pomógł: 27 razy

[C++]Maksimum z wczytanych liczb

Post autor: witekkq »

@Up wszystkie liczby mniejsze od wartości max to chyba ciągle wszystkie liczby... :)

Kod: Zaznacz cały

#include <iostream>
#include <vector>
using namespace std;

bool is_prime(int liczba)
{
	bool temp = true;
	if(liczba==1) return false;
	for(unsigned int i=2;i<=sqrt(liczba);i++)
	{
		if(liczba%i==0)
			return false;
	}
	return true;

}

int main()
{
	vector<int>liczby; 
	int temp=0,max=0;
	while(true)
	{
		cin>>temp;
		if(temp<0) break;
		if(temp>max) max=temp;
		liczby.push_back(temp);
	}

	cout<<"Wartosc maksymalna "<<max<<" pierwiastek "<<sqrt(max)<<endl;

	cout<<"Liczby pierwsze w podanym ciagu:"<<endl;
   vector<int>::iterator it;
   for( it=liczby.begin(); it!=liczby.end(); ++it )
   {
	   if(is_prime(static_cast<int>(*it)))
	   cout<< *it <<'\n';
   }
	return 0;
}
karolynqaa
Użytkownik
Użytkownik
Posty: 200
Rejestracja: 21 lis 2012, o 18:21
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 42 razy

[C++]Maksimum z wczytanych liczb

Post autor: karolynqaa »

dziękuje bardzo

-- 20 mar 2013, o 23:33 --

tylko z tego co widze to to jest napisane na dużo wyższym poziomie niż ja się ucze .. heh ;P-- 20 mar 2013, o 23:36 --ja jak do tej pory uczyłam sie tylko pisania w C++ :
instrukcja warunkowa if, pętla while (obie wersje), pętla for oraz switch/case oraz funkcje matematyczne z biblioteki math.h .
Przepraszam za kłopot bo powinnam to napisać na poczatku.
witekkq
Użytkownik
Użytkownik
Posty: 145
Rejestracja: 16 lis 2007, o 09:06
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 2 razy
Pomógł: 27 razy

[C++]Maksimum z wczytanych liczb

Post autor: witekkq »

Kolega rafalpw, jednak dobrze pytał czy pierwsze od 1 do max, czy spośród wczytanych to ja zamuliłem

Tutaj wersja od 1 do max, jeśli miałoby być spośród wczytanych liczb to musiałabyś jeszcze tablice przejrzeć.
Warto sprawdzić czy faktycznie korzystasz z funkcji które są w tej bibliotece math.h, bo może się okazać że wcale jej nie potrzebujesz.

Kod: Zaznacz cały

#include <iostream>
using namespace std;

bool is_prime(int liczba)
{
	bool temp = true;
	if(liczba==1) return false;
	for(unsigned int i=2;i<=sqrt(liczba);i++)
	{
		if(liczba%i==0)
			return false;
	}
	return true;

}

int main()
{
	int temp=0,max=0;
	while(temp>=0)
	{
		cin>>temp;
		if(temp>max) max=temp;
	}
	cout<<"Wartosc maksymalna "<<max<<" pierwiastek "<<sqrt(max)<<endl;
	for(int i=0;i<=max;i++)
		if(is_prime(i))
			cout<<i<<", ";
	return 0;
}
karolynqaa
Użytkownik
Użytkownik
Posty: 200
Rejestracja: 21 lis 2012, o 18:21
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 42 razy

[C++]Maksimum z wczytanych liczb

Post autor: karolynqaa »

Jeszcze jedno pytanie. Czy to:

bool is_prime(int liczba)
{
bool temp = true;

można zastapic czyms innym ? bo nie miałam pojaiwały mi sie takie polecenia jak 'bool'
witekkq
Użytkownik
Użytkownik
Posty: 145
Rejestracja: 16 lis 2007, o 09:06
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 2 razy
Pomógł: 27 razy

[C++]Maksimum z wczytanych liczb

Post autor: witekkq »

bool jest to typ zmiennej tak samo jak int.
true = 1
false = 0

jak chcesz koniecznie to możesz zmienić to na int.
karolynqaa
Użytkownik
Użytkownik
Posty: 200
Rejestracja: 21 lis 2012, o 18:21
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 42 razy

[C++]Maksimum z wczytanych liczb

Post autor: karolynqaa »

int is_prime(int liczba)
{
int temp = true;


tak to ma wyglądac ?
witekkq
Użytkownik
Użytkownik
Posty: 145
Rejestracja: 16 lis 2007, o 09:06
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 2 razy
Pomógł: 27 razy

[C++]Maksimum z wczytanych liczb

Post autor: witekkq »

Kod: Zaznacz cały

int is_prime(int liczba)
{
int temp = 1;
być może z true zadziała, ale nie jestem pewny a nie chce mi się sprawdzać.

@EDIT: I jeszcze jedna pętla jest do zmiany bo pewnikiem wyjdzie że 0 jest liczbą pierwszą..
ODPOWIEDZ