Поменять все негативные числа на самое маленькое положительное число - C (СИ)

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

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

Здравствуйте! Необходимо составить программу для обработки массива. Программа должна состоять из главной функции и двумя подпрограммами. В каждой подпограмме надо делать одну и ту же обработку начального массива, но для реализации одной функции надо использовать переменные с индексами, для вторый - показатели. Функциям надо отдать массив и верхние границы его индексов(массив локальный переменный). В главной функции предусмотреть: вывод информации об авторе, заполнение массива и его вывод, вызов подпрогрпмм. Предусмотреть выбор вида заполнение массива(случайными числами либо самостоятельно введены числами) . Для проверки программы использовать оба размера массивов. Задача: Поменять все негативные числа на самое маленькое положительное число( не 0). Размеры массива 20 и 25 элементов.
#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <conio.h>
 
int function1(int arr[]);
int function2(int *arr[]);
int main() 
{
int arr1[20],i;
int arr2[25],n;
int choice,choice2;
do
{
  system ("cls");
 
    printf("меню\n");
          printf("1. ИНФО\n 2. заполнение массива\n 3. вывод массива\n");
          printf("4. массив 20 элементов, функция с индексами\n 5. массив с 20 элементами, функция с указателями\n");
          printf("6. массив 25 elementov, funkcija s indeksiem\n 7. Massiv s 25 elementami, функция с указателями\n"); 
          printf("8. EXIT\n");
 
          printf("\nВЫБОР: ");
          scanf("%d", &choice); 
   
   switch(choice)
        {
            case 1: system("cls");
             printf(" ИНФО/n");
        
                 break;
                 
             case 2: 
                  do { system("cls");
                     srand(time(NULL));
 
                      printf("меню\n");
          printf("1. рандом\n");
          printf("2. s klaviaturi\n");
          printf("\n выбор: ");
          scanf("%d", &choice2); 
 
                     switch(choice2)
                     {
                                    case 1:
                  printf("Masiv:\n 1. Odnodimenss masiv\n");
                        for(i=0; i<20; i++)
                             {
                                arr1[i]=10-rand()%20; // числовой diapazon  -10..10, целые
                                 }
 
                  printf("Masiv:\n 2. Odnodimenss masiv\n");
                        for(i=0; i<25; i++)
                             {
                                arr2[i]=10-rand()%20; // chislovoj diapazon  -10..10, целые
                                 
                              }
                              break;
                              case 2: 
                                    for(i=0; i<20; i++)
                                    { printf("Vvedite %i element" ,i);
                                    arr1[i]=getche(); 
                                    }
                                     for(i=0; i<25; i++)
                                    { printf("vvedite %i element" ,i);
                                    arr2[i]=getche(); }
                                    break; default: printf("Neverno!")   ; getche(); } } while (choice!=1 || choice!=2);
            break;
              case 3: system("cls");  
              
                printf("Masiv:\n 1. Odnodimensijas masiv\n");
                        for(i=0; i<20; i++)
                             {
                               printf("%4d", arr1[i]);
                              }
                  printf("Masivi:\n 2. Odnodimensijas masiv\n");
                        for(i=0; i<25; i++)
                             {
                              printf("%4d", arr2[i]);
                              }
                              break;    
                             
             case 4: system("cls");
                 function1(arr1[20]);
                 getch();
                 break;
                 
             case 5: system("cls");
                 function1(arr2[25]);
                  break; 
             case 6: system("cls");
                 function2(arr1[20]);
                  break; 
             case 7: system("cls");
                 function2(arr2[25]);
                  break;      
             case 8: break;          
             default: printf("neverno!");
                   getch();
           } // switch konec
         } // do konec
      while (choice!=8);
 
int function1(int arr[]);
{
int tmp,arr[];
printf(" masiv: \n"); 
for (i=0; i<n;i++) printf("%d ",arr[i]);
printf("\n");
tmp=100;
for (i=0; i<n;i++)
if (arr[i]>0 && arr[i] < tmp)
{
tmp=arr[i];
}
for (i=0; i<n;i++)
if (arr[i]<0)
{
arr[i]=tmp;
}
printf(" POlu4en masiv: \n");
for (i=0; i<=n;i++) printf("%d ",arr[i]); 
printf("\n");
}
system ("pause");
 
int function2(int arr[]);
{
    
return 0;
}}
пока что с указателями не сделал. ОШИБки:

invalid conversion from `int' to `int*'

и

initializing argument 1 of `int function1(int*)'

на

function1(arr1[20]);

(строка 84) Заранее спасибо!
думаю, что проблема в декларировании функции. мне, используя одну подпрограмму надо обработать 2 массива, поэтому в самой функции сделать так, чтобы смогла обрабатывать 2 массива с разными массивами

Решение задачи: «Поменять все негативные числа на самое маленькое положительное число»

textual
Листинг программы
#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <conio.h>
 
int function1(int arr[]);
int function2(int arr[]);
int main() 
{
int arr1[20],i,max;
int arr2[25],n;
int choice,choice2;
do
{
  system ("cls");
    printf("Меню\n");
          printf("1. ИНФО\n 2. Заполение массива\n 3. Создание массива\n");
          printf("4. Массив с 20 элементами, функция с индексами\n 5.Массив с 20 элементами, функция с указателями\n");
          printf("6. Массив с 25 элементами, функция с индексами\n 7. Массив с 25 элементами, функция с указателями\n"); 
          printf("8. ВЫХОД\n");
          printf("\nВАШ выбор: ");
          scanf("%d", &choice); 
   
   switch(choice)
        {
            case 1: system("cls");
             printf(" ИНФО");
                 break;
                 
             case 2: 
                  do { system("cls");
                     srand(time(NULL));
                      printf("меню\n");
          printf("1. Рандом\n");
          printf("2. Клавиатура\n");
          printf("\nВаш выбор: ");
          scanf("%d", &choice2); 
                     switch(choice2)
                     {
                                    case 1:
                  printf("Заполнение 1. массива\n");
                        for(i=0; i<20; i++)
                             {
                                arr1[i]=10-rand()%20; //                            
                              }
                  printf("Заполнение 2 массива\n");
                        for(i=0; i<25; i++)
                             {
                                arr2[i]=10-rand()%20; // 
                                 
                              }
                              break;
                              case 2: 
                                    for(i=0; i<20; i++)
                                    { printf("Введите &i элемент" ,i);
                                    arr1[i]=getche(); 
                                    }
                                     for(i=0; i<25; i++)
                                    { printf("Введите &i элемент" ,i);
                                    arr2[i]=getche(); }
                                    break; default: printf("Неверно")   ; getche(); } } while (choice!=1 || choice!=2);
            break;
              case 3: system("cls");  
              
                printf("вывод\n");
                        for(i=0; i<20; i++)
                             {
                               printf("%4d", arr1[i]);
                              }
                  printf("вывод\n");
                        for(i=0; i<25; i++)
                             {
                              printf("%4d", arr2[i]);
                              }
                              break;    
                             
             case 4: system("cls");
                 max=20;
                 function1(&arr1[max]);
                 getch();
                 break;
                 
             case 5: system("cls");
                 max=25;
                 function1(&arr2[max]);
                  break; 
             case 6: system("cls");
                 max=20;
                 function2(&arr1[max]);
                  break; 
             case 7: system("cls");
                 max=25;
                 function2(&arr2[25]);
                  break;      
             case 8: break;          
             default: printf("неверно");
                   getch();
           } // switch конец
         } // do кнец
      while (choice!=8);
 
system ("pause");
    
return 0;
}
 
int function1(int arr[], int max)
{
int tmp;
 
printf(" Было: \n"); 
for (int i=0; i<=max;i++) printf("%d ",arr[i]);
printf("\n");
tmp=100;
for (int i=0; i<=max;i++)
if (arr[i]>0 && arr[i] < tmp)
{
tmp=arr[i];
}
for (int i=0; i<=max;i++)
if (arr[i]<0)
{
arr[i]=tmp;
}
printf(" СТало: \n");
for (int i=0; i<=max;i++) printf("%d ",arr[i]); 
printf("\n");
}
 
int function2(int arr[], int* max)
{
    system("cls");
    int tmp2;
printf(" Было: \n"); 
for (int* i=arr; i<=max;i++) printf("%d ",*(arr+i));
printf("\n");
tmp2=100;
for (int* i=arr; i<=max;i++)
if ((*i>0) && (*i < tmp2))
{
tmp2=*i;
}
for (int* i=arr; i<=max;i++)
if (*i<0)
{
*i=tmp2;
}
printf(" Стало: \n");
for (int* i=arr; i<=max;i++) printf("%d ",*i); 
printf("\n");
}

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

В этом коде реализована программа на языке C, которая меняет все негативные числа в массиве на самое маленькое положительное число. Список действий программы:

  1. Ввод числа из массива в переменную choice.
  2. Проверка значения choice.
  3. Если choice равно 1 или 2, выполнение функций function1 или function2 соответственно.
  4. Если choice равно 3, вывод содержимого массива arr1 и arr2.
  5. Если choice равно 4 или 5, выполнение функций function1 или function2 соответственно с использованием массива arr1 или arr2.
  6. Если choice равно 6 или 7, выполнение функций function1 или function2 соответственно с использованием массива arr1 или arr2.
  7. Если choice равно 8, выход из программы.
  8. Если choice не равно 1, 2, 3, 4, 5, 6, 7 или 8, вывод сообщения неверно. Функция function1 принимает два аргумента: массив и максимальное значение индекса в массиве. Внутри функции происходит вывод содержимого массива, а затем замена всех негативных чисел на самое маленькое положительное число, найденное в массиве. Функция function2 также принимает два аргумента: массив и указатель на максимальное значение индекса в массиве. Внутри функции происходит вывод содержимого массива, а затем замена всех негативных чисел на самое маленькое положительное число, найденное в массиве. Обратите внимание, что в этой функции используется оператор * для доступа к элементам массива через указатель.

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


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

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

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