Нужно пояснение к паре программ - 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 после каждого цикла.