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