Re: Пропозиції і скарги)
Припускаю, що пан ur_naz багато в чому має рацію, але, будь ласка, допоможіть йому знайти дорогу на якийсь москальський форум, бо вести розмову в такому тоні — для українського сайту вже трохи перебір.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Пропозиції і скарги)
Для відправлення відповіді ви повинні увійти або зареєструватися
Припускаю, що пан ur_naz багато в чому має рацію, але, будь ласка, допоможіть йому знайти дорогу на якийсь москальський форум, бо вести розмову в такому тоні — для українського сайту вже трохи перебір.
а що ми такі тендітні? тобто усіх заставити писати чорнильними ручками то не є тіранія і перебор?
Що поганого в моїй тиранії й чорнильних ручках (взагалі-то, це металеве перо тонкого гнучкого типу, можливості якого дещо ширші, ніж у чорнильної авторучки)? І взагалі, моя реформа стосуватиметься деяких графічних наворотів, відображених у повідомленні, які поки що, за неможливості призначити підвладну мені юнікодівську комісію, доводиться виводити ручкою, а тоді на клавіатурі спеціальні клавіші будуть для цього.
тиранія знищує інтелект, а відсутність інтелекту руйнує все інше
О, в мене стільки цікавих ідей, які я примушу вас утілювати в життя, що без інтелекту ви точно не виживете.
Що ви розумієте, він - вільна людина, хамить тому, кому захоче!
Переробив програму, тепер якщо потрібно буде переробити програму на більшу кількість предметі, потрібно тільки змінити значення 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;
}
Ні, в нас теми просто розподілені на: Ввід та вивід С, Масиви, Розгалуження, Функції і тд
Так, щоб тема була посвячена якомусь методу, стилю немає
Отже вчили, але вам не сказали)
Процедурне програмування — парадигма програмування, заснована на концепції виклику процедури. Процедури, також відомі як підпрограми, методи, або функції.
Хм, все що я можу обгорнути в функцію це вивід даних ( таблицю ).
float average;
чи я помиляюсь, чи це дуже погана ідея. я називаю це табурєтка. бо в площини три опорні точки, а в табурєтки 4. Тобі потрібно написати окрему функцію float get_average_score(const Student &);
Так, в с/с+ класи повинні мати назви з великої літери бо прийде тімлід і надере тобі зад
Для лабораторної без окремого завдання про процедури цього цілком достатньо.
Хоча, звісно, якби 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);
}
то це було б крутіше.
Так, в с/с+ класи повинні мати назви з великої літери бо прийде тімлід і надере тобі зад
Розкажіть це стандартній бібліотеці, та ще ряду проєктів де клали на вашу думку.
Взагалі стиль С++ це snake_case.
Взагалі стиль С++ це snake_case.
Розкажіть це парням з Embarcadero
Взагалі стиль С++ це snake_case.
Розкажіть це парням з Embarcadero
Ой то ви цей.. З тих самих, перепрошую одразу не признав.
Для відправлення відповіді ви повинні увійти або зареєструватися