C++ Zacząć program od nowa

Paulina-Anna
Użytkownik
Użytkownik
Posty: 201
Rejestracja: 6 gru 2009, o 14:57
Płeć: Kobieta
Lokalizacja: Polska
Podziękował: 16 razy
Pomógł: 24 razy

C++ Zacząć program od nowa

Post autor: Paulina-Anna »

Cześć!

Mam takie pytanie. Napisałam właśnie program znajdujący liczby pierwsze w danym przedziale i zastanawiam się, czy da się dodać do niego coś takiego, że po tym, jak program już znajdzie te liczby, nie trzeba było wyłączać go i wpisywać nowego przedziału tylko od razu za pomocą np. Enter'a przejść do początku programu.

Dziękuję :)
void_t
Użytkownik
Użytkownik
Posty: 103
Rejestracja: 14 maja 2011, o 18:25
Płeć: Mężczyzna
Pomógł: 26 razy

C++ Zacząć program od nowa

Post autor: void_t »

Możesz stworzyć główną pętlę programu - w niej będzie wykonywana dana czynność, a kiedy się wykona - pobierze od użytkownika jakiś znak z klawiatury. Jeśli znakiem będzie enter to kontynuujesz, w przeciwnym wypadku wykonujesz inną dowolną akcję.
Paulina-Anna
Użytkownik
Użytkownik
Posty: 201
Rejestracja: 6 gru 2009, o 14:57
Płeć: Kobieta
Lokalizacja: Polska
Podziękował: 16 razy
Pomógł: 24 razy

C++ Zacząć program od nowa

Post autor: Paulina-Anna »

A czy mógłbyś mi napisać jak i gdzie? Szukałam troche w internecie, ale za każdym razem, gdy próbowałam kompilować, pokazywało mi błąd.

Kod: Zaznacz cały

#include <iostream>
#include <cmath>
using namespace std;
int main (){
    int a,b;
    
    cout << "Podaj najmniejsza liczbe z przedzialu: ";
    cin >> a;
    cout << "Podaj najwiekszą liczbe z przedzialu: ";
    cin >> b;
    cout<<"Liczby pierwsze z przedzialu ("<<a<<","<<b<<"): ";
    for (int i=a;i<=b;i++) {
        if (i==2) cout<<i<<" ";              
        for (int j=2;j<=ceil(sqrt(i));j++) {
            if ((i%j)==0) break;
            if (j==ceil(sqrt(i))) cout<<i<<" ";
        }
    }
    cout<<endl;   
    system("pause");
    return 0;
}
void_t
Użytkownik
Użytkownik
Posty: 103
Rejestracja: 14 maja 2011, o 18:25
Płeć: Mężczyzna
Pomógł: 26 razy

C++ Zacząć program od nowa

Post autor: void_t »

Na przykład w ten sposób:

Kod: Zaznacz cały

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
	int	a;
	int	b;

	while (1) { // wejście w pętle główną programu
		cout << endl << "Podaj najmniejsza liczbe z przedzialu: ";
		cin >> a;

		cout << "Podaj najwiekszą liczbe z przedzialu: ";
		cin >> b;

		cout << "Liczby pierwsze z przedzialu ("<<a<<","<<b<<"): ";
		for (int i = a; i <= b; i++) {
			if (i == 2) cout << i << " ";
			for (int j = 2; j <= ceil(sqrt(i)); j++) {
				if (!(i % j)) { break; }
				if (j == ceil(sqrt(i))) cout << i << " ";
			}
		}
		cout << endl;
		
		cout << "Naciśnij ENTER by kontynuować, 'q' by zakończyć\n";
		/* tutaj Twoja procedura obslugi standardowego wejścia */
	}

	return 0;
}

Paulina-Anna
Użytkownik
Użytkownik
Posty: 201
Rejestracja: 6 gru 2009, o 14:57
Płeć: Kobieta
Lokalizacja: Polska
Podziękował: 16 razy
Pomógł: 24 razy

C++ Zacząć program od nowa

Post autor: Paulina-Anna »

Bardzo, bardzo dziękuję.

Nie wychodziło mi, bo próbowałam zastosować "do...while", ale teraz już wszystko działa.

Jeszcze raz dziękuję
void_t
Użytkownik
Użytkownik
Posty: 103
Rejestracja: 14 maja 2011, o 18:25
Płeć: Mężczyzna
Pomógł: 26 razy

C++ Zacząć program od nowa

Post autor: void_t »

Proszę uprzejmie. Konstrukcja, którą podałaś też by się sprawdziła, dla przykładu:
1. Załóżmy, że zmienna ch to integer znaku wprowadzonego z klawiatury.
2. Załóżmy też, że jeśli ch będzie miało wartość 'q' to program się zakończy, wtedy:

Kod: Zaznacz cały

do {
// kod
} while (ch != 'q')
ODPOWIEDZ