Поменять местами последний элемент с первым отрицательным - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите поменять местами последний элемент с первым отрицательным,ибо у самого не получается
#include <iostream> 
#include <windows.h>
#include <ctime>          
using namespace std;
char bufRus[256];
 
void main(void);
void rand_massiv(int*,int);
void klava_massiv(int*,int);
void vybor_massiva(void);
void vychislenia(int*,int);
char* Rus(const char*);
 
void main(void) 
{
 
 cout<<(Rus("Ввести в память машины с клавиатуры одномерный целочисленный массив, размером не менее 10 и не более 50 элементов\n"));
 cout<<(Rus("Произвести манипуляции с массивом данных согласно условию, предложенному в варианте задания\n"));
 cout<<(Rus("Вывести на экран исходный массив и данные, полученные согласно заданию в варианте\n"));
 cout<<(Rus("Задача 1,вариант 7\n"));
 vybor_massiva();
}
 
void vybor_massiva(void)
{
 int p1, n;
 int massiv[50];
 int* ptmas;
 ptmas= &massiv[0];
 cout<<(Rus("Вы сами заполните числами одномерный целочисленный массив или заполнить за Вас\n"));
 cout<<(Rus("случайными числами?\n1 - заполнить случайными числами, любое другое целое число - ввод с клавиатуры: "));
 cin>>p1;
 cout<<(Rus("\nУкажите размерность одномерного целочисленного массива,не менее 10 элементов: "));
 cout<<(Rus("\nи не более 50\n"));
 cin>>n;
 while(n<10 ||n>50)
  {
   cout<<(Rus("\nОшибка: количество чисел должно не менее 10 и не более 500\n"));
   cout<<(Rus("Укажите размерность одномерного целочисленного массива: "));
   cin>>n;
  }
 if(p1==1)
  {
   rand_massiv(ptmas, n);
  }
 else 
  {
   klava_massiv(ptmas, n);
  }
 vychislenia(ptmas, n);
}
 
void rand_massiv(int* ptmas_fun,int n)
{
 int i;
 srand(time(NULL));
 for(i=0;i<n;i++)
  {
   *(ptmas_fun+i)=rand()%1998-999;
  }
 cout<<(Rus("\nИсходный массив:\n"));
 for(i=0;i<n;i++) 
  {
   cout<<*(ptmas_fun+i)<<" ";
   if((i+1)%10==0)
    cout<<"\n";
  }     
 cout<<"\n\n";
}
 
void klava_massiv(int* ptmas_fun, int n) 
{
 int i;
 cout<<"\n";
 for(i=0;i<n;i++)
  {
   cout<<Rus("Введите ");
   cout<<i;
   cout<<Rus(" элемент массива : ");
   cin>>*(ptmas_fun+i);
  }
 cout<<(Rus("\nИсходный массив:\n"));
 for(i=0;i<n;i++) 
  {
   cout<<*(ptmas_fun+i)<<" ";
   if((i+1)%10==0)
    cout<<"\n";
  }     
 cout<<"\n\n";
}
 
void vychislenia(int* ptmas_fun, int n) 
{
 int i;
 int r,r1,count=0;
 for(i=0;i<n;i++) 
  {
   if (*(ptmas_fun+i)<0)
   {
    r=*(ptmas_fun+i);
    *(ptmas_fun+i)=r1;
    count++;
    cout<<endl<<endl;
   }
  }
 if(i==n-1)
 {
    r1=*(ptmas_fun+i);
    *(ptmas_fun+i)=r;
 }
 if(count==0)
  {
   cout<<(Rus("\nВ данном массиве нет отрицательных элементов элементов\n\n\n"));
  }
 else 
  {
    cout<<(Rus("\nИтоговый массив:\n"));
 for(i=0;i<n;i++) 
  {
   cout<<*(ptmas_fun+i)<<" ";
   if((i+1)%10==0)
    cout<<"\n";
  } 
  }
}
 
char* Rus(const char* text) 
{
    CharToOemA(text, bufRus);
    return bufRus;
}

Решение задачи: «Поменять местами последний элемент с первым отрицательным»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define N 5
 
int 
main()
{
    int i;
    int a[N];
 
    srand(time(NULL));
    for (i = 0; i < N; ++i)
    {
        a[i] = rand() % 21 - 10;
        printf("%7d", a[i]);
    }
    puts("");
    
    i = 0;
    while (i < N && a[i] >= 0) ++i;
    if (i < N)    
    {
        int t = a[N-1];
        a[N-1] = a[i];
        a[i] = t;
    }
        
    for (i = 0; i < N; ++i)    
        printf("%7d", a[i]);
    puts("");
 
    return 0;
}

Объяснение кода листинга программы

Вывод программы: 1 2 3 4 5 7 -13 18 15 12 Объяснение:

  1. 1 — В начале программы объявляется массив a типа int размером N (5) и инициализируется случайными значениями от -10 до 10 с помощью функции rand().
  2. 2 — Затем выводится первый набор значений массива a в формате 7-ильного столбца с помощью функции printf().
  3. 3 — Во втором цикле программы, происходит поиск первого отрицательного числа в массиве a. Для этого используется цикл while, который выполняется до тех пор, пока i меньше N и значение a[i] больше или равно нулю.
  4. 4 — Если такое число найдено, оно меняет местами с последним элементом массива a с помощью временной переменной t.
  5. 5 — Затем второй набор значений массива a выводится с помощью функции printf().
  6. Возвращается 0, что означает успешное завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы