Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103

Комментарии кода

24.04.2018, 13:37. Показов 765. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня Господа .Начинаю осваивать азы языка C++ .У меня просьба прокомментировать сей код,потому как не совсем понимаю после C# почему нет подсветки классов FILE* data;, и что значит "*" в данном случае???В C# так обозначают знак умножения.Please HELP!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// ConsoleProject1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#include<fstream>
#include<string.h>
 
struct People{
            char FIO[100];
            int gR;
            char pol[100];
            char dolghnost[100];
            float srokWork;
            float zarplt;
        };
 
People person;
 
int n;
 
void newPeople(){
 
    FILE* data;
        if ((data = fopen("people.dat", "a+")) == NULL)
            {
                perror("Error occured while opening file");
                exit(1);
            }
 
        printf("ФИО:");
        std::cin >> person.FIO;
        printf("Год рождения:");
        std::cin >> person.gR;
        printf("Пол:");
        std::cin >> person.pol;
        printf("Должность:");
        std::cin >> person.dolghnost;
        printf("Срок работы на фирме:");
        std::cin >> person.srokWork;
        printf("Зарплата:");
        std::cin >> person.zarplt;
 
        struct People *p = &person;
        char *c = (char *) p;
        for (int i = 0; i < sizeof(struct People); ++i)
        {
            putc(*c++, data);
        }
        n++;
    fclose(data);       
}
 
void Search(){
    FILE * data;
   // data = ("people.dat", "rb");
    
}
 
int main(){
 
setlocale(LC_ALL, "russian");
 
int var;
    printf("1.Ввести нового сотрудника.\n2.Посмотреть список сотрудников женского пола определенного срока работы.\n3.Выход.");
    printf("Выберите нужный вариант (1-3):");
    scanf("%d", &var);
        switch(var){
            case 1:newPeople();
                    break;
            case 2:Search();
                    break;
            case 3:exit(0);
                    break;
        }
return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.04.2018, 13:37
Ответы с готовыми решениями:

Комментарии и разбор кода
#include &quot;stdafx.h&quot; #include &quot;tchar.h&quot; #include &quot;iostream&quot; #include &quot;string&quot; #include &quot;math.h&quot; #include &quot;conio.h&quot; using...

Нужны комментарии к строке кода
Здравствуйте, у меня непонятки, если несложно, объясните некоторое в приложенные кусочках кода. #include &lt;iostream&gt; using...

Написать комментарии к строкам кода
Срочно нужно разобрать код. Вот задание: &quot;Строка состоит из символов, среди которых, в частности, могут быть цифры. Последовательность цифр...

11
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
24.04.2018, 13:53
Цитата Сообщение от Веселый Посмотреть сообщение
и что значит "*" в данном случае???В C# так обозначают знак умножения
указатели и знак умножуния
1
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
24.04.2018, 14:11
В C# * тоже означает указатель.
Только их можно применять только в unsafe коде.
1
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
24.04.2018, 17:11  [ТС]
Antikl,Вы можете грамотно прокомментировать выше указанный код???Please.

Добавлено через 5 минут
Исправляю теги на C++

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// ConsoleProject1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#include<fstream>
#include<string.h>
 
struct People{
            char FIO[100];
            int gR;
            char pol[100];
            char dolghnost[100];
            float srokWork;
            float zarplt;
        };
 
People person;
 
int n;
 
void newPeople(){
 
    FILE* data;
        if ((data = fopen("people.dat", "a+")) == NULL)
            {
                perror("Error occured while opening file");
                exit(1);
            }
 
        printf("ФИО:");
        std::cin >> person.FIO;
        printf("Год рождения:");
        std::cin >> person.gR;
        printf("Пол:");
        std::cin >> person.pol;
        printf("Должность:");
        std::cin >> person.dolghnost;
        printf("Срок работы на фирме:");
        std::cin >> person.srokWork;
        printf("Зарплата:");
        std::cin >> person.zarplt;
 
        struct People *p = &person;
        char *c = (char *) p;
        for (int i = 0; i < sizeof(struct People); ++i)
        {
            putc(*c++, data);
        }
        n++;
    fclose(data);       
}
 
void Search(){
    FILE * data;
   // data = ("people.dat", "rb");
    
}
 
int main(){
 
setlocale(LC_ALL, "russian");
 
int var;
    printf("1.Ввести нового сотрудника.\n2.Посмотреть список сотрудников женского пола определенного срока работы.\n3.Выход.");
    printf("Выберите нужный вариант (1-3):");
    scanf("%d", &var);
        switch(var){
            case 1:newPeople();
                    break;
            case 2:Search();
                    break;
            case 3:exit(0);
                    break;
        }
return 0;
}
Добавлено через 5 минут
MrGluck,извините,особого отличия я не увидел.Странно но в моём редакторе VS 2010 такой подсветки не было
C++
1
 FILE* data;
.Было так FILE* data;

Добавлено через 4 минуты
Ув.New man,объясните подробнее что значит указатель "*"???
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
24.04.2018, 17:17
Цитата Сообщение от Веселый Посмотреть сообщение
FILE* data;
Данная срока объявляет переменную data, в которой будет храниться адрес структуры FILE (или массива структур).
Более строго нужно писать так
C++ (Qt)
1
FILE* data=NULL;
тогда переменная data будет проинициализирована ссылкой на "нулевой адрес".
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.04.2018, 17:19
Цитата Сообщение от Веселый Посмотреть сообщение
Ув.New man,объясните подробнее что значит указатель "*"
К сожалению, это слишком обширная тема, которую тяжело в двух словах объяснить. Однако, в любой книжке для начинающих она подробно рассматривается. Не хотелось бы прямо тыкать в RTFM, но, в данном случае, никто лучше экспертов-книгописателей не объяснит столь сложную для начинающих тему. Через это проходили все сишники и плюсовики. Именно указатели на первых порах вызывают больше всего вопросов.

Тем более, у вас и в остальном есть проблемы с пониманием базовых вещей. Файловый ввод/вывод как раз идёт в паре с потоками ввода/вывода на С++.
1
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
24.04.2018, 17:25
Цитата Сообщение от Веселый Посмотреть сообщение
объясните подробнее что значит указатель
Вот Вам наглядный пример
Есть 9-ти этажный дом, и в нем размещено много всякой информации(людей и предметов) и ему присвоено имя Main_libe_haus - это имя структуры, место размещения данных
А если взять адрес этого дома (ул.Строителей 28) то это и есть указатель, где этот дом находится.
1
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
24.04.2018, 17:29
Цитата Сообщение от Веселый Посмотреть сообщение
что значит указатель "*"???
Указатель на адрес, где записанные твои данные.
На простом примере покажу, чтоб можно было понять суть:
C++
1
2
3
int *ptr //переменная, которая будет служить указателем
int num = 5; //твои данные
*ptr = &num;
*ptr как и num будет равен 5. Запись &num означает, что указатель *ptr указывает на адрес переменной(соответственно и на данные, которые находятся в ней). Если вывести &num, то мы получим адрес переменной.
C++
1
std::cout << &num;
Добавлено через 1 минуту
Если же вывести *ptr получим 5.
1
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
24.04.2018, 18:36  [ТС]
Неужели всё это нужно, лишь для возможности вывода адреса переменной???

Добавлено через 3 минуты
MrGluck,я нашёл вот что-то .Подойдёт в качестве уразумления ???
https://pikabu.ru/story/kak_na... li_4396060

Добавлено через 30 минут
Мда! C++ мне показался заморочливей C#.
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
24.04.2018, 19:36
Они нужны для двух вещей:
1) избегать лишнего копирования данных, когда нужно куда-то передать данные (для этого ещё ссылки используются)
2) для прямой работы с памятью.
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
24.04.2018, 20:58
Цитата Сообщение от Веселый Посмотреть сообщение
Мда! C++ мне показался заморочливей C#.
это дело привычки и практики + чтение статей и литературы и не будет замороченно
0
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
24.04.2018, 23:12
Цитата Сообщение от Веселый Посмотреть сообщение
Мда! C++ мне показался заморочливей C#.
Я бы не сказал. Мне кажется и тот, и другой одинаковы по заморочливости(если не учитывать то, что C# от C++ пошел).
Я могу вам еще посоветовать посмотреть уроки на YouTube; там очень доступно(как по мне) объясняют, а главное: рассказывают основы, чтоб можно было ориентироватся в языке, писать небольшие и несложные программы и если нужно углублять свои знания в дальнейшем.
Вот видео по указателям, возможно оно более прояснит вам ихнюю суть и применение:
Кликните здесь для просмотра всего текста


Добавлено через 2 минуты
https://youtu.be/gbmsuiBk_6I
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2018, 23:12
Помогаю со студенческими работами здесь

Комментарии для фрагмента кода
можете написати коментарі до фрагмента коду void cheng(char * d, char * s){ for(char *p1=s,*p2=d; (*p2=*p1);++p1,++p2){ ...

Написать комментарии к фрагменту кода списка
Можете написать комментарии. Очень нужно. Заранее спасибо! !

Написать подробные комментарии к каждой строке кода
Напишите комментарий к каждой команде что она делает пожалуйста #include &lt;iostream&gt; #include &lt;algorithm&gt; #include...

Написать подробные комментарии к каждой строке кода
Напишите комментарий к каждой команде что она делает пожалуйста #include &lt;windows.h&gt; #define ID_EDIT 1001 #define ID_BUTTON...

Неправильно отображаются комментарии кода при публикации на форуме
Добрый день. Часто обращаюсь на форум и, практически каждый раз, приходится комментарии к коду либо убирать, либо заново их переписывать,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru