напишите плиз прогу в С++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by -=megahertz=-, 30 Jan 2011.

  1. -=megahertz=-

    -=megahertz=- Elder - Старейшина

    Joined:
    23 May 2007
    Messages:
    79
    Likes Received:
    16
    Reputations:
    1
    1.создать консольное приложение и составить программу для решения задачи с одномерным массивом.Спроектировать переменную для хранения исх данных и результатов.

    Массив X(N)(N<=60). Переписать отрицательные элементы массива X последовательно в массив Y. Отпечатать сформированный массив Y.


    Заранее спасибо!
     
  2. Mayor16

    Mayor16 Member

    Joined:
    23 Oct 2010
    Messages:
    107
    Likes Received:
    24
    Reputations:
    6
    Отпечатать сформированный массив Y это типа вывести?
    Если да то могу написать...пиши в ЛС
     
  3. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Code:
    #include <iostream>
    #include <vector>
    
    int main( int argc, char *argv[] )
    {
    	std::vector < int > arrX;
    	std::vector < int > arrY;
    	int number = 0;
    
    	do
    	{
    		std::cin >> number;
    
    		if( number < 0 ) arrY.push_back( number );
    		else arrX.push_back( number );
    	}
    	while( number );
    
    	for( size_t i = 0; i < arrY.size(); i++ )
    	{
    		std::cout << arrY[ i ] << " | ";
    	}
    
    	std::cin.ignore().get();
    
    	return 0;
    }
    
    Ввод заканчивается когда number равен нулю. Можете поменять ноль на что то другое.
     
  4. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Code:
    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    void main()
    {
    	int N;
    	
    	do
    	{
    		cout<<"Count: ";
    		cin>>N;
    	} while(N > 60);
    
    	int * X = new int[N];
    	int Negative = 0;
    
    	for(int i = 0; i < N; i++)
    	{
    		cout<<"X["<<i<<"] = ";
    		cin>>X[i];
    
    		if(X[i] < 0)
    			Negative++;
    	}
    
    	int * Y = new int[Negative];
    
    	for(int i = 0, c = 0; i < N; i++)
    	{
    		if(X[i] < 0)
    		{
    			Y[c] = X[i];
    			cout<<Y[c]<<endl;
    			c++;
    		}
    	}
    
    	delete X;
    	delete Y;
    	_getch();
    }
    не знаю, зачем здесь векторы :)
     
  5. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Вектор -- это удобно, это избавляет нас от кучи ненужных операций + читаемость кода лучше. Да и использование здесь вектора вполне уместно, ибо на производительность нам класть. Так что зачем изобретать велосипед, если все уже давно сделали за нас? Вот так вот ;)
     
  6. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    -=megahertz=-
    я в той теме уже ответил))
     
  7. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Code:
    #include <iostream>
    using namespace std;
    
    void main()
    
    {
    
    int lengthX = 0, beginn =0, end =0, *massivX, *massivY, lengthY = 0, zifra = 0 ;//инициализация
    bool ask;//булевская, для do-while
    do
    {
    	cin.clear();//чистим-чистим
    	_flushall();
    cout<<"Ввведите размер массива(не более 60): ";
    cin>>lengthX;
    if(cin.fail()||lengthX>59||lengthX<=0)//проверка условая
    {
    ask = false;//при ошибке false, идём на повтор
    }
    else ask = true;//примелимый ввод- идём дальше
    
    }while(ask!=true);//проверка-поторить или идти дальше
    
    massivX = new int [lengthX];//создаём массив
    end = lengthX;//последний индекс массива
    cout<<"Длина массива:"<<lengthX<<endl;//выводим на консоль длину массива
    for(int i = 0; i<=lengthX;i++)
    {
    	cin.clear();//чистим-чистим
    	
    cout<<"Введите число для индекса "<<i+1<<" в массива.\n";
    cin>>zifra;//считывам ввод
    if(zifra<0)
    {
    	massivX[end]=zifra;//если меньше 0, пишем в конец массива.
    
    	end--;//перемещаемсыя с конца массива на единицу
    	lengthY++;//увеличиваем длину массива с негативными числами
    	
    }
    else {massivX[beginn]= zifra; beginn++;}//число больше 0, заносим в начало массива, идём дальше по массиву+1
    
    }
    
    
    massivY = new int[lengthY];//создаём массив с неганивными числами
    for(int i = 0; i<=lengthY;i++)
    {
    massivY[i] = massivX[lengthX];//переписываем негативные числа
    lengthX--; 
    
    }
    for(int i = 0; i<lengthY;i++)
    cout<<i+1<<". element: "<<massivY[i]<<"\n";//выводим массив с неганивными числами на консоль.
    system("pause");
    
    
    }
    
    Постарался подробно объяснить что да как.Вариантов всегда много, главное понять смысл- а дальше экспериментируй.
    +немного сортировки.
     
    #7 Spot, 30 Jan 2011
    Last edited: 30 Jan 2011