Предмет: Информатика, автор: heiisso

Потрібно поміняти місцями максимальний елемент з першим. C/C+

Ответы

Автор ответа: asilvejstruk
1

#include <stdio.h>

int main()

{

int array[100], maximum, size, c, location = 1;

printf("Enter the number of elements in array\n");

scanf("%d", &size);

printf("Enter %d integers\n", size);

for (c = 0; c < size; c++) { // Введення масиву.

scanf("%d", &array[c]); // Записуємо введені дані в масив.

}

maximum = array[0]; // Припускаємо, що перший елемент - максимальний.

for (c = 1; c < size; c++) { // Порівнятимо з рештою.

if (array[c] > maximum) { // Якщо array[c] > maximum, тоді...

maximum = array[c]; // ...maximum = array[c].

location = c+1; // ...location - "локація" (номер) max-значення.

}

}

int temp = array[0]; // temp - "тимчасова" (допоміжна) zm-ka.

array[0] = maximum; // max-значення -> [0].

array[location-1] = temp; // [0] -> max-значення.

printf("Resultant array is\n"); // Виводимо "результуючий" (вiдсортований) masyv:

for (c = 0; c < size; c++) { // ...for-loop'om:

printf("%d\n", array[c]); // ...printf'om:

} // ...end of for-loop.

return 0; // KONIEC programu! :)

}

Автор ответа: lozromanik
0

Відповідь:

#include<iostream>

#include<limits>

using namespace std;

class MyException:public std::exception{

 public:

 char* what(){

   return "Incorrect input. Please, try again.\n";}

 };

int CheckInput(std::string s){

 int temp;

 while(true){

       try{

     std::cout<<s;

     if(!(std::cin>>temp)){

       throw MyException();}

     return temp;}

     catch(MyException e){

       std::cout<<e.what();

       std::cin.clear();

   std::cin.ignore(numeric_limits<streamsize>::max(), '\n');}

     }

 }

int main (){

 int quantity=CheckInput("Input quantity of elements:\n");

 int* array = new int[quantity];

 for(int i=0;i<quantity;i++){

   array[i] = CheckInput("Input "+std::to_string(i+1)+" element of array\n");

   }

 std::cout<<"Array before exchange:\n";

 for(int i=0;i<quantity;i++){

   std::cout<<i<<" -> "<<array[i]<<std::endl;}

 int max = array[0],index = 0;

 for(int i=1;i<quantity;i++){

   if(max<array[i]){

     max = array[i];

     index = i;}}

 std::swap(array[0],array[index]);

 std::cout<<"Array after exchange:\n";

 for(int i=0;i<quantity;i++){

   std::cout<<i<<" -> "<<array[i]<<std::endl;}

delete[] array;

 return 0;

}

Пояснення:

Похожие вопросы
Предмет: Математика, автор: lerakovalska21
Предмет: Алгебра, автор: ivankravtc109
Предмет: Математика, автор: KATERINKA456