1

Тема: Парність числа (мова С)

Дано матрицю А(3,4). Вивести на друк матрицю і номери стовпців і рядків, де знаходяться третій і п’ятий парні елементи цієї матриці.
Спробувала розв'язати цю задачу, але вийшло не дуже :-*
Ось текст програми

#include <stdio.h>
#include <math.h>
int main()
{
   float A[3][4]={
       {2,6,7.5,4.1},
       {5,0,2.3,-6.2},
       {3,1.5,0,4.9},
   };
   float p3=A[0][0];
   float p5=A[0][0];
   int ip3=0;
   int jp3=0;
   int ip5=0;
   int jp5=0;
   int n=0;
   for(int i=0; i<3; i++){
       for(int j=0; j<4; j++){
           printf("%.1f\t",A[i][j]);
           if(A[i][j]%2==0){   
               n++;
           }
           if(n==3){
               p3=A[i][j];
               ip3=i;
               jp3=j;
           }
           if(n==5){
               p5=A[i][j];
               ip5=i;
               jp5=j;
           }
       }
       printf("\n");
   }
   printf("Третій парний елемент - A%f[%i][%i]",p3,ip3,jp3);
   printf("П'ятий парний елемент - A%f[%i][%i]",p5,ip5,jp5);
  

    return 0;
}

Відповідь компілятора:

Compilation failed due to following error(s).main.c: In function ‘main’:
main.c:20:22: error: invalid operands to binary % (have ‘float’ and ‘int’)
            if(A[i][j]%2==0){
               ~~~~~~~^

Не розумію *TIRED*

2

Re: Парність числа (мова С)

Парними (і непарними) бувають лише цілі числа. Число 7.5 не є ані парним, ані непарним. Тобто матриця має бути з цілих чисел (int). Про що, власне, і каже компілятор: некоректні операнди до бінарного оператора % (‘float’ and ‘int’) - float і int не можуть бути операндами до %, лише самі int (чи інші цілі).

Подякували: Lata, Chemist-i2

3

Re: Парність числа (мова С)

Дякую, Коало! А як дізнатися чи парне число, якщо це дріб? Це взагалі можливо?

4

Re: Парність числа (мова С)

Ясно, йду переробляти матрицю 8)
У програмуванні все не так просто, як у математиці *ROSE*

5

Re: Парність числа (мова С)

Хоча.. Зрештою, все як у математиці)))

Подякували: koala1

6 Востаннє редагувалося P.Y. (19.11.2020 20:28:15)

Re: Парність числа (мова С)

Lata написав:

А як дізнатися чи парне число, якщо це дріб? Це взагалі можливо?

Якщо це дріб, то воно за визначенням не належить ні до парних, ні до непарних. Хоча змінна для десяткових дробів і може містити значення, яке є цілим числом (тобто, має нульову дробову частину).

float можна конвертувати в int — проте, при цьому дробова чатина числа відкидається, тому (int)1.0 та (int)1.5 дадуть одне й те ж ціле число. Тобто, нам треба спершу перетворити змінну типу float на int, переконатися, що її дробова частина нульова, і вже потім перевіряти отримане з неї ціле число на парність чи непарність. Якось так:

int n;
float a;
....
n=(int)a;
if(a-n != 0.0)
    printf("Число дробове");
else if(n%2 == 1)
    printf("Число непарне");
else
    printf("Число парне");

Втім, гадаю, для даної задачі це непотрібно — там простіше оголосити увесь масив цілим і працювати тільки з цілими числами. Якщо, звичайно, дробові значення, задані в масиві, не є частиною умови задачі.

Подякували: Lata1

7

Re: Парність числа (мова С)

Програмування - це взагалі розділ математики.

Подякували: Lata, leofun012

8

Re: Парність числа (мова С)

Погоджуюсь з Коалою і Replace Group дякую! Програму залишу такою, як є, але спосіб Replace Group було цікаво і корисно проаналізувати *ROSE*

9

Re: Парність числа (мова С)

koala написав:

Програмування - це взагалі розділ математики.

гарний жарт

10

Re: Парність числа (мова С)

FakiNyan написав:
koala написав:

Програмування - це взагалі розділ математики.

гарний жарт

Не жарт.
Див. теорія автоматів, зкінчений автомат, формальна граматика.

Подякували: 0xDADA11C7, tchort, koala, Lata4