Отделно положителните, отделно отрицателните

Да се напише програма, която позволява да се въведат N на брой числа и след това извежда първо само положителните, а после само отрицателните числа от въведените.

По желание: Да се реши задачата в случая на въвеждане на числа до въвеждане на 0.

Публикувано в 12в с етикети . Постоянна връзка.

4 Responses to Отделно положителните, отделно отрицателните

  1. kaloyan каза:

    С частта по желание :-)

    #include <cstdlib>
    #include <iomanip>
    #include <iostream>
       
    using namespace std;
       
    using namespace std;
       
    // максимален брой елементи в опашката
    const int N=50;
       
    // указател към върха на опашката
    int head = 0;
    // указател към края на опашката
    int tail = 0;
       
    // масив за съхранение на елементите на опашката
    int s[N];
       
    // инициализиране на опашката
    void init()
    {
        head=0;
        tail=0;
        for(int i=0;i<=N;i++) s[i]=0;
    }
       
    // проверка дали опашката е празна
    bool isEmpty() {
        return head==tail;
    }
       
    // проверка дали опашката е пълна
    bool isFull() {
        return ((tail+1)%N)==head;
    }
       
    // запис на стойност в опашката
    bool push(int X)
    {
        bool ok = !isFull();
        if (ok){
            s[tail] = X;
            tail++;
            tail%=N;
        }
        return ok;
    }
       
    // извличане на стойност от опашката
    bool pop(int &X)
    {
        bool ok = !isEmpty();
        if (ok) {
            X = s[head];
            head++;
            head%=N;
        }
        return ok;
    }
       
    int main ( ) {
    // инициализираме опашката
    init();
    int ch, br=0;
    
    //въвеждаме числата
    cout<<"Vavedete chisla(0 za krai)"<<endl;
    do{
    	cin>>ch;
    	if(ch==0) break;
    	else {
    		push(ch);
    		br++;
    	}
    }
    while(true);
    
    //извеждаме положителните
    cout<<"Polojitelni:"<<endl;
    for(int i=0; i<br; i++){
    	pop(ch);
    	if(ch>0) cout<<ch<<endl;
    	else push(ch);//ако числото е отрицателно го връщаме в опашката
    }
    
    //извеждаме цялата опашка(в нея са останали само отрицателните числа)
    cout<<"Otricatelni:"<<endl;
    while(!isEmpty()){
    	pop(ch);
    	cout<<ch<<endl;
    }
     
    cout<<endl;
    return 0;
    }
  2. sup3rEva каза:
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    // максимален брой елементи в опашката
    const int N=50;
    
    // указател към върха на опашката
    int head = 0;
    // указател към края на опашката
    int tail = 0;
    
    // масив за съхранение на елементите на опашката
    int s[N];
    
    // инициализиране на опашката
    void init()
    {
    head=0;
    tail=0;
    for(int i=0;i<=N;i++) s[i]=0;
    }
    
    // проверка дали опашката е празна
    bool isEmpty() {
    return head==tail;
    }
    
    // проверка дали опашката е пълна
    bool isFull() {
    return ((tail+1)%N)==head;
    }
    
    // запис на стойност в опашката
    bool push(int X)
    {
    bool ok = !isFull();
    if (ok){
    s[tail] = X;
    tail++;
    tail%=N;
    }
    return ok;
    }
    
    // извличане на стойност от опашката
    bool pop(int &X)
    {
    bool ok = !isEmpty();
    if (ok) {
    X = s[head];
    head++;
    head%=N;
    }
    return ok;
    }
    
    int main(int argc, char** argv) {
    	// инициализираме опашката
    	init();
    	// въвеждаме числата
    	int N, chislo;
    	cout<<"Vavedete broq na chislata "<<endl;
    	cin>>N;
    	for(int i=0;i<N;i++) {
    		cout<<"Vavedete chislo "<<endl;
    		cin>>chislo;
    		push(chislo);
    
    	}
    	//извеждане на положителните числа
    	cout<<"Polojitelnite chisla sa: "<<endl;
    	for(int i=0; i<N; i++){
    		pop(chislo);
    		if(chislo>0) 
    			cout<<chislo<<endl;
    		else push(chislo);
    	}
        //извеждане на отрицателните числа
        cout<<"Otricatelnite chisla sa: "<<endl;
        while(!isEmpty()){
    		pop(chislo);
    		cout<<chislo<<endl;
    		
       }
    	cout<<endl;
    	return 0;
    }

Вашият коментар