1

(22 відповідей, залишених у C)

Якщо знову все не так, просто напишіть "-"

2

(22 відповідей, залишених у C)

Я вже майже написав все, але воно не виводить мені окремо інформацію про власників жигулі

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{   
    int n;
    char pr[60];
    char m[60];
    char k[60];
    int no;
    FILE *A = fopen("cars.txt","w");
    if (A!= NULL) {
        printf("Введiть кiлькiсть автолюбителiв: ");
        scanf("%i",&n);
        for (int i=0; i<n; i++){
            printf("Прiзвище: ");
            scanf("%s",pr);      
            printf("Марка: ");
            scanf("%s",m);     
            printf("Колiр: ");
            scanf("%s",k);      

            printf("Номер (чотиризначне число): ");
            scanf("%d",&no);

            printf("Введено: %s\n%s\n%s\n%d\n",pr,m,k,no);
            fprintf(A,"%s\n%s\n%s\n%d\n",pr,m,k,no);
        }
    }
    fclose(A);

    A = fopen("car.txt","r+");

    if (A!= NULL) {
        printf("Бiлi жигулi з номером, який починається на 45 :\n");
        while(fscanf(A,"%s\n%s\n%s\n%d\n",pr,m,k,&no) == 4)
        {
            if (strcmp(m,"жигулі") == 0 &&
                strcmp(k,"білий") == 0  &&
                no/100 == 45)
            {
                printf("%s\n%s\n%s\n%d\n", pr, m, k, no);
                break;
            }
        }
        fclose(A);
    }
}

3

(22 відповідей, залишених у C)

Тоді в чому взагалі заключається суть цього форуму?

4

(22 відповідей, залишених у C)

Що ви собі позволяєте, якщо не вмієте нормально розмовляти, то не пишіть краще

5

(22 відповідей, залишених у C)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main ()
{
   int n, pr, m, k, no;
    FILE *A;    
    A=fopen("cars.txt","w");
    if (A!= NULL) {
for (int i=0; i<n; i++){
puts("Введіть кількість автолюбителів: ");
scanf("%d",&n); 

puts("Прізвище: ");
scanf("%d",&pr); 

puts("Марка: ");
scanf("%d",&m); 

puts("Колір: ");
scanf("%d",&k); 

puts("Номер: ");
scanf("%d",&no);

printf("%d\n%d\n%d\n%d\n",pr,m,k,no);
fprintf(A,"%d\n%d\n%d\n%d\n",pr,m,k,no); 
}
}
fclose(A);

{
    A=fopen("car.txt","r+");
    if (A!= NULL) {
puts("Білі жигулі з номером, який починається на 45 :\n");
while (!feof(A))
        {
            fscanf(A,"%d\n%d\n%d\n%d\n",&pr,&m,&k,&no);
            if (m=="жигулі" &&
                k=="білий"  &&
                no(1,2)=="45"){
                printf("%d%d%d%d", pr, m, k, no);
                }
            
fclose(A);
return 0;
}
}
}

Так вже трохи краще?

6

(22 відповідей, залишених у C)

я вас зрозумів, дякую за пораду

7

(22 відповідей, залишених у C)

У мене завдання сформувати файл, який містить інформацію про 10 автолюбителів: прізвище, марка автомобіля, колір, номер. Використовуючи ці дані, надати інформацію про автолюбителів, які мають “Жигулі” білого кольору і їх номер починається з 45.
Я написав код, але він видає помилки, допоможіть виправити.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main ()
{
    int n;
    int pr;
    int m;
    int k;
    int no;
FILE *A;    
A=fopen("cars.txt","w");
for (int i=0; i<10; i++){
printf("Введіть кількість автолюбителів: ");
scanf("%i",&n); 

printf("Прізвище: ");
scanf("%i",&pr); 

printf("Марка: ");
scanf("%i",&m); 

printf("Колір: ");
scanf("%i",&k); 

printf("Номер: ");
scanf("%i",&no);

printf("%i\n%i\n%i\n%i\n",pr,m,k,no);
fprintf(A,"%i\n%i\n%i\n%i\n",pr,m,k,no); 
}
fclose(A);

A=fopen("car.txt","r+");   
printf("Білі жигулі з номером, який починається на 45 :\n");
while (!feof(A))
        {
            scanf(A,"%i\n%i\n%i\n%i\n",pr,m,k,no);
            if (m="жигулі" &&
                k="білий"  &&
                no(1,2)="45"){
                printf("%i%i%i%i", pr, m, k, no);
                }
            
fclose(A);
return 0;
}
}

Це видає компілятор

main.c:41:16: warning: passing argument 1 of scanf from incompatible pointer type [-Wincompatible-pointer-types]
   41 |          scanf(A,"%i\n%i\n%i\n%i\n",pr,m,k,no);
      |                ^
      |                |
      |                FILE * {aka struct _IO_FILE *}
In file included from main.c:3:
/usr/include/stdio.h:397:42: note: expected const char * restrict but argument is of type FILE *’ {aka struct _IO_FILE *’}
  397 | extern int scanf (const char *__restrict __format, ...) __wur;
      |                   ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
main.c:44:14: error: called object no is not a function or function pointer
   44 |              no(1,2)="45"){
      |              ^~
main.c:13:9: note: declared here
   13 |     int no;
      |         ^~

Я думаю, що номер потрібно оголосити як string, якщо це так, то як це зробити?

8

(23 відповідей, залишених у C)

я видалив else і кількість зменшилася, але чи можна звести до одного?

9

(23 відповідей, залишених у C)

Дуже дякую вам за допомогу, а чи можна записати, щоб у добуток був тільки кінцевий, а не по порядку

10

(23 відповідей, залишених у C)

десь у вас помилка, бо воно як виводило 2ий елемент матриці у добутку, так і далі виводить

11

(23 відповідей, залишених у C)

Я помилився, виводить не 10, а 2 елемент матриці, проблема у функції, але яка?

12

(23 відповідей, залишених у C)

я зробив, виводить постійно 10, не розумію чому

13

(23 відповідей, залишених у C)

то я правильно "запрограмував" множення вище головної діагоналі у матриці? значить проблема тільки у printf?

14

(23 відповідей, залишених у C)

можете хоча б сказати чи все добре з функцією?

15

(23 відповідей, залишених у C)

Я студент, вивчаю С. У мене завдання. У мене задано 2 матриці А(4,4) та Е(3,3). Потрібно знайти добуток елементів, які лежать вище головної діагоналі. Пошук добутку оформити у вигляді підпрограми. Вивести вхідні матриці та результат.

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int A[4][4], E[3][3];
int main()
{
    printf("Вхідна матриця A\n");
    srand(time(NULL));
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            A[i][j] = (rand() % 10) + 1;
            printf("%i\t", A[i][j]);
        } ;
        printf("\n");
        
    }
    int mult = 1;
    for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
      if (mult == j > i) {
      mult = mult * A[i][j];
          
      }
    }
  }
    printf("Добуток А: \n", mult);

    printf("Вхідна матриця E\n");
    srand(time(NULL));
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            E[i][j] = (rand() % 10) + 1;
            printf("%i\t", E[i][j]);
        } ;
        printf("\n");
    
} 
    int multi = 1;
    for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
      if (multi == j > i) {
      multi = multi * E[i][j]; 
          
      }
    }
  }
    printf("Добуток Е: \n", multi);
}

Компілятор видає:

main.c:27:12: warning: too many arguments for format [-Wformat-extra-args]
   27 |     printf("Добуток А: \n", mult);
      |            ^~~~~~~~~~~~~~~~~~~~~~~
main.c:48:12: warning: too many arguments for format [-Wformat-extra-args]
   48 |     printf("Добуток Е: \n", multi);
      |            ^~~~~~~~~~~~~~~~~~~~~~~
Вхідна матриця A
10      3       9       2
5       8       1       1
5       3       4       1
10      4       1       6
Добуток А: 
Вхідна матриця E
10      3       9
2       5       8
1       1       5
Добуток Е: 

Що робити?

16

(23 відповідей, залишених у C)

Напишіть хоч щось...

17

(23 відповідей, залишених у C)

stovbanolexandr написав:

У мене задано 2 матриці А(4,4) та Е(3,3). Потрібно знайти добуток елементів, які лежать вище головної діагоналі. Пошук добутку оформити у вигляді підпрограми. Вивести вхідні матриці та результат.
Я написав код, але не знав як написати цю функцію добутку, тому взяв з С++, але не знаю як переписати останній рядок, хоча можливо ще є помилки.

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int A[4][4], E[3][3];
int main()
{
    printf("Вхідна матриця A\n");
    srand(time(NULL));
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            A[i][j] = (rand() % 10) + 1;
            printf("%i\t", A[i][j]);
        } ;
        printf("\n");
        
    }
    int mult = 1;
    for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
      mult = j > i ? mult * A[i][j] : mult;
    }
  }
    printf("Добуток А: \n", mult);

    printf("Вхідна матриця E\n");
    srand(time(NULL));
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            E[i][j] = (rand() % 10) + 1;
            printf("%i\t", E[i][j]);
        } ;
        printf("\n");
    
} 
    int multi = 1;
    for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
      multi = j > i ? multi * E[i][j] : multi;
    }
  }
    printf("Добуток Е: \n", multi);
}

18

(23 відповідей, залишених у C)

Я трохи виправив код, тепер так. Але все одно не працює(

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int A[4][4], E[3][3];
int main()
{
    printf("Вхідна матриця A\n");
    srand(time(NULL));
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            A[i][j] = (rand() % 10) + 1;
            printf("%i\t", A[i][j]);
        } ;
        printf("\n");
        
    }
    int mult = 1;
    for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
      if (mult == j > i) {
      mult * A[i][j];
          
      }
    }
  }
    printf("Добуток А: \n", mult);

    printf("Вхідна матриця E\n");
    srand(time(NULL));
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            E[i][j] = (rand() % 10) + 1;
            printf("%i\t", E[i][j]);
        } ;
        printf("\n");
    
} 
    int multi = 1;
    for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
      if (multi == j > i) {
      multi * E[i][j]; 
          
      }
    }
  }
    printf("Добуток Е: \n", multi);
}

19

(23 відповідей, залишених у C)

У мене задано 2 матриці А(4,4) та Е(3,3). Потрібно знайти добуток елементів, які лежать вище головної діагоналі. Пошук добутку оформити у вигляді підпрограми. На друк вивести вхідні матриці та результат.
Я написав код, але не знав як написати цю функцію добутку, тому взяв з С++, але не знаю як переписати останній рядок, хоча можливо ще є помилки.

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int A[4][4], E[3][3];
int main()
{
    printf("Вхідна матриця A\n");
    srand(time(NULL));
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            A[i][j] = (rand() % 10) + 1;
            printf("%i\t", A[i][j]);
        } ;
        printf("\n");
        
    }
    int mult = 1;
    for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
      mult = j > i ? mult * A[i][j] : mult;
    }
  }
    printf("Добуток А: \n", mult);

    printf("Вхідна матриця E\n");
    srand(time(NULL));
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            E[i][j] = (rand() % 10) + 1;
            printf("%i\t", E[i][j]);
        } ;
        printf("\n");
    
} 
    int multi = 1;
    for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
      multi = j > i ? multi * E[i][j] : multi;
    }
  }
    printf("Добуток Е: \n", multi);
}