21

Re: Пропозиції і скарги)

Припускаю, що пан ur_naz багато в чому має рацію, але, будь ласка, допоможіть йому знайти дорогу на якийсь москальський форум, бо вести  розмову в такому тоні — для українського сайту вже трохи перебір.

22

Re: Пропозиції і скарги)

а що ми такі тендітні? тобто усіх заставити писати чорнильними ручками то не є тіранія і перебор?

23

Re: Пропозиції і скарги)

Що поганого в моїй тиранії й чорнильних ручках (взагалі-то, це металеве  перо тонкого гнучкого типу, можливості якого дещо ширші, ніж у чорнильної авторучки)? І взагалі, моя реформа стосуватиметься деяких графічних наворотів, відображених у повідомленні, які поки що,  за неможливості призначити підвладну мені юнікодівську комісію, доводиться виводити ручкою, а тоді на клавіатурі спеціальні клавіші будуть для цього.

24

Re: Пропозиції і скарги)

тиранія знищує інтелект, а відсутність інтелекту руйнує все інше

25

Re: Пропозиції і скарги)

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

Подякували: 0xDADA11C71

26

Re: Пропозиції і скарги)

Що ви розумієте, він - вільна людина, хамить тому, кому захоче!

27

Re: Пропозиції і скарги)

Переробив програму, тепер якщо потрібно  буде переробити програму на більшу кількість предметі, потрібно тільки змінити значення NUMB_SUBJECT. Назви змінних стали зрозумілішими, невдалось замінити scanf на fgets, бо після виведення рядка який було введено через fgets наступний рядок автоматично переводить на новий рядок.
Наприклад має бути: Name Surname Group  і тд, то виводить
Name
Surname
Group

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
#define STR_LEN 40
#define NUMB_SUBJECT 5
#define NAME_STRING "Name"
#define SURNAME_STRING "Surname"
#define GROUP_STRING "Group"
#define SCORE_STRING "Score"
typedef struct
{
    char name[STR_LEN];
    char surname[STR_LEN];
    char group[STR_LEN];
    float score[NUMB_SUBJECT];
    float average;
} student;
typedef struct
{

    char name[STR_LEN];

} subject;

int main()
{
    unsigned int NUMB_STUDENTS, i, j;
    printf("Enter the number of students: ");
    scanf("%i", &NUMB_STUDENTS);
    getchar();
    if (NUMB_STUDENTS < 4)
    {
        printf("Minimum number of students is 4!");
        return 1;
    }
    student students[NUMB_STUDENTS], tmp;
    printf("Enter Subjects:\n");
    subject subjects[NUMB_SUBJECT];
    int k;
    for (i = 0; i < NUMB_SUBJECT; i++)
    {
        printf("Subject #%i: ", i + 1);
        scanf("%s", &subjects[i].name);
        getchar();
    }
    printf("Enter first name, last name, group and grade of the subject:\n");
    for (i = 0; i < NUMB_STUDENTS; i++)
    {
        printf("Student #%i:\nName: ", i + 1);
        scanf("%s", &students[i].name);
        printf("Surname: ");
        scanf("%s", &students[i].surname);
        printf("Group: ");
        scanf("%s", &students[i].group);
        {
            for (j = 0; j < NUMB_SUBJECT; j++)
            {
                printf("Assessment in %s ===> ", subjects[j].name);
                scanf("%f", &students[i].score[j]);
                if (students[i].score[j] > 12 || students[i].score[j] < 1)
                {
                    printf("You enter wrong score!");
                    return 1;
                }
            }
            getchar();
        }
    }
    printf("%-12s %-12s %-12s ", NAME_STRING, SURNAME_STRING, GROUP_STRING);
    for (i = 0; i < NUMB_SUBJECT; i++)
        printf("%-12s", subjects[i].name);
    printf("\n");
    for (i = 0; i < NUMB_STUDENTS; i++)
    {
        printf("%-12s %-12s %-12s ", students[i].name, students[i].surname, students[i].group);
        for (j = 0; j < NUMB_SUBJECT; j++)
            printf(" %-10.0f ", students[i].score[j]);
        printf("\n");
    }
    float amount = 0;
    for (i = 0; i < NUMB_STUDENTS; i++)
    {
        for (j = 0; j < NUMB_SUBJECT; j++)
            amount += (students[i].score[j]);
        students[i].average = amount / NUMB_SUBJECT;
        amount = 0;
    }
    printf("\nAverage grade of students (column Score)\n");
    printf("\n%-12s %-12s %-12s ", NAME_STRING, SURNAME_STRING, GROUP_STRING);
    for (i = 0; i < NUMB_SUBJECT; i++)
    {
        printf("%-12s", subjects[i].name);
        if (i == NUMB_SUBJECT - 1)
            printf("%-12s", SCORE_STRING);
    }
    printf("\n");
    for (i = 0; i < NUMB_STUDENTS; i++)
    {
        printf("%-12s %-12s %-12s ", students[i].name, students[i].surname, students[i].group);
        for (j = 0; j < NUMB_SUBJECT; j++)
            printf(" %-10.0f ", students[i].score[j]);
        printf("%-11.1f", students[i].average);
        printf("\n");
    }
    for (i = 0; i < NUMB_STUDENTS - 1; i++)
        for (j = 0; j < NUMB_STUDENTS - i - 1; j++)
            if (students[j + 1].average > students[j].average)
            {
                tmp = students[j];
                students[j] = students[j + 1];
                students[j + 1] = tmp;
            }
    printf("\nStudents are ranked in order of increasing the grade point average per session\n");
    printf("\n%-12s %-12s %-12s ", NAME_STRING, SURNAME_STRING, GROUP_STRING);
    for (i = 0; i < NUMB_SUBJECT; i++)
    {
        printf("%-12s", subjects[i].name);
        if (i == NUMB_SUBJECT - 1)
            printf("%-12s", SCORE_STRING);
    }
    printf("\n");
    for (i = 0; i < NUMB_STUDENTS; i++)
    {
        printf("%-12s %-12s %-12s ", students[i].name, students[i].surname, students[i].group);
        for (j = 0; j < NUMB_SUBJECT; j++)
            printf(" %-10.0f ", students[i].score[j]);
        printf("%-11.1f", students[i].average);
        printf("\n");
    }
    printf("\n\n Press any key: ");
    _getch();
    return 0;
}
Подякували: koala1

28

Re: Пропозиції і скарги)

А процедурний стиль ще не проходили?

29

Re: Пропозиції і скарги)

Ні, в нас теми просто розподілені на: Ввід та вивід С, Масиви, Розгалуження, Функції і тд
Так, щоб тема була посвячена якомусь методу, стилю немає

30

Re: Пропозиції і скарги)

Отже вчили, але вам не сказали)

Процедурне програмування — парадигма програмування, заснована на концепції виклику процедури. Процедури, також відомі як підпрограми, методи, або функції.

31

Re: Пропозиції і скарги)

Хм, все що я можу обгорнути в функцію це вивід даних ( таблицю ).

32

Re: Пропозиції і скарги)

float average;

чи я помиляюсь, чи це дуже погана ідея. я називаю це табурєтка. бо в площини три опорні точки, а в табурєтки 4. Тобі потрібно написати окрему функцію  float get_average_score(const Student &);
Так, в с/с+ класи повинні мати назви з великої літери бо прийде тімлід і надере тобі зад

33

Re: Пропозиції і скарги)

Для лабораторної без окремого завдання про процедури цього цілком достатньо.
Хоча, звісно, якби main мала вигляд приблизно

{
    unsigned int numb_students = input_int("Enter the number of students: ");
    Student students[numb_students];
    for(unsigned int =0;i<numb_students;++i)
         input_student(&students[i]); //тут можна і середнє заповнити; а можна дописати окрему функцію, як радить ur_naz
     // питання в тому, що ми економимо - пам'ять чи швидкість і надійність
    output_students(students,numb_students);
    sort_students(students,numb_students);
    printf("Sorted:");
    output_students(students,numb_students);
}

то це було б крутіше.

34

Re: Пропозиції і скарги)

ur_naz написав:

Так, в с/с+ класи повинні мати назви з великої літери бо прийде тімлід і надере тобі зад

Розкажіть це стандартній бібліотеці, та ще ряду проєктів де клали на вашу думку.
Взагалі стиль С++ це snake_case.

35

Re: Пропозиції і скарги)

Взагалі стиль С++ це snake_case.

Розкажіть це парням з Embarcadero

36

Re: Пропозиції і скарги)

ur_naz написав:

Взагалі стиль С++ це snake_case.

Розкажіть це парням з Embarcadero

Ой то ви цей.. З тих самих, перепрошую одразу не признав.

37

Re: Пропозиції і скарги)

А ви що, з єтих?
https://replace.org.ua/uploads/images/6053/3dec147639023a95f942ccc4a750a43a.jpg

38

Re: Пропозиції і скарги)

https://youtu.be/6sZGPqfeS4g