Нужно пояснение к паре программ - C (СИ)
Формулировка задачи:
Здравствуйте, помогите пожалуйста с парой задач на Си:
Это 2 куска кода, в первом куске выводится информация о больном, информация берется из самой программы, во втором куске информация берется с клавиатуры. Может быть вопрос покажется очень глупым, но все же - что означают "." и "->" и какая разница между ними в первом и втором куске
(pacient3P.S. Я не совсем дурак или тупой, просто очень много лекций по языкам программирования я проболел, и теперь не все понимаю, учитель немного помогает разобраться, но все же с половиной приходится разбираться самому, и у меня это не всегда получается, поэтому приходится просить помощи. Зарание спасибо откликнувшимся, рассчитываю на вас.
//Пациент 3 pacient3.nomer = pacient2.nomer; sprintf(pacient3.fio, "%s",pacient2.fio); sprintf(pacient3.pasport, "%s",pacient2.pasport); sprintf(pacient3.obratilsya, "%s",pacient2.obratilsya); sprintf(pacient3.vipisan, "%s",pacient2.vipisan); sprintf(pacient3.diagnoz, "%s",pacient2.diagnoz); cout <<pacient2.nomer <<" " <<pacient2.fio <<" " <<pacient2.pasport <<" " <<pacient2.obratilsya <<" " <<pacient2.vipisan <<" " <<pacient2.diagnoz <<endl;
//Пациент 4 pacient4=(spisok*)malloc(sizeof(spisok)); printf("vvedite nomer->" ); scanf ("%d", &(pacient4->nomer)); printf("vvedite fio->" ); scanf ("%s", pacient4->fio); printf("vvedite pasport->" ); scanf ("%s", pacient4->pasport); printf("vvedite data obrasheniya->"); scanf ("%s", pacient4->obratilsya); printf("vvedite data vipiski->" ); scanf ("%s", pacient4->vipisan); printf("vvedite diagnoz->" ); scanf ("%s", pacient4->diagnoz); cout <<pacient4->nomer <<" " <<pacient4->fio <<" " <<pacient4->pasport <<" " <<pacient4->obratilsya <<" " <<pacient4->vipisan <<" " <<pacient4->diagnoz <<endl;
.
obratilsya) и (pacient4->
obratilsya). И еще - дана программа: - пользователь вводит 2 числа a и b. - специальная функция вычисляет площадь треугольника, образованного линиями: y=ax+b, осью Ox и осью Oy; - ввод и вывод данных должен быть также реализован через функции; - главная функция программы «main» должна обеспечивать «нормальный» диалог с пользователем. И я не совсем понимаю как обьяснить ее действие построчно, если вас не затруднит, напишите подробные комментарии к строкам программы, пожалуйста.#include <stdio.h> #include <conio.h> #include <iostream.h> #include <stdlib.h> #include <math.h> void Vvod(int *, int *); double Raschet(int, int); void Print(double); void main (void) { int a,b,i; double s; for (i=0; i<5; i++) { Vvod(&a, &b); s=Raschet(a, b); Print(s); } } //****************************************************** void Vvod(int *a, int *b) { printf("vvedite storonu a="); scanf ("%d" ,a); printf("vvedite storonu b="); scanf ("%d" ,b); } //****************************************************** double Raschet(int a, int b) { double s, x, y; if (a==0) { s=-1; printf("treugolnik otsutstvuet\n"); } else { y=b; x=b/a; s=(x*y)/2; } return s; } //****************************************************** void Print(double R) { if (R>=0.0) printf("S=%lf\n\n",R); } //******************************************************
Решение задачи: «Нужно пояснение к паре программ»
textual
Листинг программы
// подключени заголовочных файлов #include <stdio.h>//это что бы работали printf() и scanf(). #include <conio.h> //функции этого заголовка, вообще в проге не используются, его можно удалить #include <iostream.h>// и это тоже удалить #include <stdlib.h> // и это #include <math.h>// и это void Vvod(int *, int *); //обьявление (не определение!) функции Vvod double Raschet(int, int); //обьявление функции Raschet void Print(double); //обьявление функции void main (void) //точка входа в рограмму { int a,b,i; // обьявление переменных double s;// обьявление переменных for (i=0; i<5; i++)//цикл который повторится 4 раз с i в диапазоне [0..4] { //внутри цикла происходит следущее Vvod(&a, &b); //вводятся очередые a и b s=Raschet(a, b); //определяется площать прямоугольеика Print(s); //площадь выводится на экран. }// четыре раза пользователь бует вводить свои a и b } //****************************************************** void Vvod(int *a, int *b) //процидура по вводу а и b { printf("vvedite storonu a="); scanf ("%d" ,a); //а и b возвращаются по ссылке, здесь все тривиально. printf("vvedite storonu b="); scanf ("%d" ,b); } //****************************************************** double Raschet(int a, int b) //определение площади { double s, x, y; // если высота =0 то прога возвращает -1 - результат свидетельствующий о неудаче подсчета. на самом деле надо бы 0 возвращать if (a==0) { s=-1; printf("treugolnik otsutstvuet\n"); } else { y=b;//здесь вычислятеся непосредственно площадь x=b/a; s=(x*y)/2; } return s; //вычисленное значение возвращается функцией } //****************************************************** void Print(double R) //вывод на экран значения R ... {// ... тлько если оно больше или равно 0; этой ф-ей в проге выводитс на экран уже посчитанная площадь треугольника. if (R>=0.0) printf("S=%lf\n\n",R); } //******************************************************
Объяснение кода листинга программы
- В коде присутствуют функции: Vvod, Raschet, Print, main.
- Функция Vvod используется для ввода значений переменных a и b.
- Функция Raschet используется для расчета площади треугольника на основе введенных значений a и b.
- Функция Print используется для вывода значения площади на экран.
- В функции main происходит инициализация переменных a, b, i, s.
- Затем в цикле for происходит вызов функции Vvod, ввод значений a и b, расчет площади с помощью функции Raschet и вывод значения площади с помощью функции Print.
- Если высота треугольника равна 0, функция Raschet возвращает -1 и выводит сообщение
treugolnik otsutstvuet
. - Если высота треугольника не равна 0, то в функции Raschet вычисляется площадь треугольника и возвращается значение s.
- Значение площади выводится на экран в функции Print, если оно больше или равно 0.0.
- Значения переменных a, b, i, s выводятся на экран в функции main после каждого цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д