Cách tìm số lớn nhất và nhỏ nhất trong mảng c++

Làm cách nào để viết Chương trình C để tìm Số lớn nhất và Nhỏ nhất trong một Mảng bằng Ví dụ về Vòng lặp?

Chương trình C để tìm số lớn nhất và nhỏ nhất trong một mảng

Chương trình này cho phép người dùng nhập Kích thước và các thành phần hàng của Mảng một chiều. Tiếp theo, chúng tôi đang sử dụng Vòng lặp for để tìm số Nhỏ nhất và Lớn nhất trong số các phần tử mảng và vị trí chỉ mục tương ứng

#include<stdio.h>
int main()
{
	int a[10], Size, i, Minimum, Min_Position, Maximum, Max_Position;
	
	printf("\nPlease Enter the size of an array  :  ");
	scanf("%d",&Size);
	
	printf("\nPlease Enter %d elements of an array: \n", Size);
	for(i=0; i<Size; i++)
	{
		scanf("%d",&a[i]);
	}   
 
  	Minimum = a[0];
  	Maximum = a[0];
  	
	for(i=1; i<Size; i++)
   	{
    	if(Minimum > a[i])
     	{
       		Minimum = a[i];
       		Min_Position = i;
	 	}
	   	if(Maximum < a[i])
     	{
       		Maximum=a[i];
       		Max_Position = i;
     	}    
   	}
  
  	printf("\n Smallest element in an Array = %d", Minimum);
  	printf("\n Index position of the Smallest element = %d", Min_Position);
  	
  	printf("\n Largest element in an Array = %d", Maximum);
  	printf("\n Index position of the Largest element = %d", Max_Position);
  	return 0;
}
C Program to find Largest and Smallest Number in an Array 1

Trong Chương trình này, các dòng mã sau đây sẽ gán phần tử mảng đầu tiên (phần tử ở vị trí chỉ số 0) cho các biến Tối thiểu và Tối đa

Tối thiểu = a[0];
Tối đa = a[0];

Ở đây, For Loop sẽ đảm bảo rằng số đó nằm trong khoảng từ 0 đến giá trị kích thước tối đa của Mảng một chiều. Trong ví dụ chương trình C này, nó sẽ là từ 0 đến 7

For Loop – Lần lặp đầu tiên. for(i = 1; 1 < 8; 1++)
Điều kiện là True nên nó sẽ nhập vào Câu lệnh If

if(Minimum > a[i]) = if(25 > 89) – Có nghĩa là, Điều kiện là Sai. Vì vậy, nó sẽ thoát khỏi khối If và đi vào khối If tiếp theo.
if(Maximum < a[i]) = if(25 < 89) – Điều đó có nghĩa là, Điều kiện là Đúng
Maximum = 89
Max_Position = 1

Tiếp theo, tôi sẽ được tăng thêm 1

Chương trình C tìm số lớn nhất và số nhỏ nhất trong mảng For Loop – Second Iteration. for(i = 2; 2 < 8; 2++)
Điều kiện bên trong Vòng lặp For là True nên trình biên dịch sẽ nhập vào Chương trình C để tìm Số lớn nhất và Số nhỏ nhất trong một mảng Câu lệnh If.

Tôi phải tìm cách hiển thị Số tối đa và Số tối thiểu trong một mảng, kích thước của mảng là 100 và sẽ không vượt quá số đó và không cần xác thực đầu vào. Chương trình sẽ tiếp tục yêu cầu đầu vào cho đến khi gặp 0 và nó cũng sẽ được thêm vào mảng

Tôi đã tìm ra mọi thứ ngoại trừ cách theo dõi giá trị lớn nhất và nhỏ nhất. Tôi sẽ đánh giá cao nếu ai đó có thể sửa mã của tôi hoặc chỉ cho tôi. Một vấn đề khác mà tôi gặp phải là kết thúc vòng lặp và thực hiện phép tính tối đa/tối thiểu trong vòng lặp while khi đầu vào bằng 0

/*
 ============================================================================
 Name        : test.c
 Author      :
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include 
#include 
#define n  100
int main(void){


 int numbers[n];
 int i = 1;
 int j;
        int input;
 int maxvalue;
 int minvalue;

   printf("Enter the next array element>");

input = scanf("%d", &numbers[100]);



while (input != 0){

  numbers[i] = input;
  i++;
  printf("Enter the next array element, while loop>");
  input = scanf("%d", &numbers[n]);
  if (input == 0){
printf("Enter the next array element, if loop");
   numbers[i] = 0;

   for (j =2;j <= i; j++){
    minvalue = numbers[1];

    j++;
    if (numbers[j] > minvalue){
     maxvalue = numbers[j] ;
    }
    else{
     minvalue = numbers[j] ;
    }

   }


  }
 }


printf("%f\t", maxvalue);

printf("%f\n", minvalue); 
 }

CHỈNH SỬA. Tôi đã loại bỏ tất cả các đề xuất của bạn và chỉnh sửa mã của tôi. Đây là mã của tôi dưới đây. Tuy nhiên, đầu ra của nó không như tôi mong đợi

#include 
#include 
#define N  100
int main(void){


    int numbers[N];
    int i = 0;
    int j;
        int input;
    int maxvalue;
    int minvalue;

            printf("Enter the next array element>");

scanf("%d", &input);



while (input != 0){

        numbers[i] = input;
        i++;

        if (input == 0){
                   i++;
            numbers[i] = 0;
                        minvalue = numbers[0];
                        maxvalue = numbers[0];
                        for (j=0;j<=i-1;j++){

                            if (minvalue >= numbers[j]){
                                minvalue = numbers[j];
                            }else if (maxvalue <= numbers[j]){
                                maxvalue = numbers[j];
                            }


                        }

/* min = value of first array element
max = value of first array element

begin loop for each array element, index = 0 to (n-1)

--- if array element value is less than min, set min to this value
--- if array element value is more than max, set max to this value

increment index and repeat loop til last index is completed

average = sum / number of elements (n).
max and min will hold their correct values.*/




        }
                printf("Enter the next array element, while loop>");
    scanf("%d", &input);
    }


printf("%d\t", maxvalue);
printf("%d", minvalue);
    }

Đây là đầu ra, tôi đang nhận được. Ai đó có thể giải quyết điều này cho tôi

Enter the next array element>1
Enter the next array element, while loop>2
Enter the next array element, while loop>3
Enter the next array element, while loop>0
12190144 l6Press [Enter] to close the terminal

CHỈNH SỬA CUỐI CÙNG. TÔI ĐÃ GIẢI QUYẾT ĐIỀU NÀY CỦA RIÊNG MÌNH. Tôi đặt kiểm tra tối thiểu/tối đa bên ngoài vòng lặp WHILE chính, điều này cho phép nhập giá trị 0 vào mảng