Переделать с паскаля на си! - C (СИ)
Формулировка задачи:
Program nextday;
Var d,m,y,d1,m1,y1,v,h:integer;
Begin
Writeln('Эта программа вводит дату,следующую за введённой.');
Writeln('Введите дату в формате DD MM YYYY');
Readln(d,m,y);
v:=y mod 4;
If (m=4) or (m=6) or (m=9) or (m=11) then h:=0
Else h:=1;
If (y<0) then write('Ошибка ввода даты. Повторите ввод.')
Else if (m<0) or (m>12) then write('Ошибка ввода даты. Повторите ввод.')
Else if (d<0) or (d>31) then write('Ошибка ввода даты. Повторите ввод.')
Else if (h=0) and (d>30) then write('Ошибка ввода даты. Повторите ввод.')
Else if (m=2) and (v=0) and (d>29) then write('Ошибка ввода даты. Повторите ввод.')
Else if (m=2) and (v<>0) and (d>28) then write('Ошибка ввода даты. Повторите ввод.')
Else begin
If (d=31) and (m=12) then begin
d1:=1; m1:=1; y1:=y+1; end
Else if (d=31) then begin
d1:=1; m1:=m+1; y1:=y; end
Else if (d=30) and (h=0) then begin
d1:=1; m1:=m+1; y1:=y; end
Else if (d=29) and (m=2) then begin
d1:=1; m1:=3; y1:=y; end
Else if (d=28) and (m=2) and (v<>0) then begin
d1:=1; m1:=3; y1:=y; end
Else begin
d1:=d+1; m1:=m; y1:=y; end;
Write('За введённой датой ',d,'.',m,'.',y,' следует дата ',d1,'.',m1,'.',y1);
end;
End.
Решение задачи: «Переделать с паскаля на си!»
textual
Листинг программы
#include <stdio.h> int main(void) { int d,m,y,d1,m1,y1,v,h; printf("Эта программа вводит дату,следующую за введённой."); printf("Введите дату в формате DD MM YYYY"); scanf( "%d%d%d", &d, &m, &y); //d = 30; m = 4; y = 2018; v = y % 4; if ((m==4) || (m==6) || (m==9) || (m==11)) h = 0; else h = 1; if (y < 0) printf("Ошибка ввода даты. Повторите ввод."); else if ((m<0) || (m>12)) printf("Ошибка ввода даты. Повторите ввод."); else if ((d<0) || (d>31)) printf("Ошибка ввода даты. Повторите ввод."); else if ((h==0) && (d>30)) printf("Ошибка ввода даты. Повторите ввод."); else if ((m==2) && (v==0) && (d>29)) printf("Ошибка ввода даты. Повторите ввод."); else if ((m==2) && (v!=0) && (d>28)) printf("Ошибка ввода даты. Повторите ввод."); else { if ((d==31) && (m==12)) { d1 = 1; m1 = 1; y1 = y+1; } else if (d == 31) { d1 = 1; m1 = m+1; y1 = y; } else if ((d == 30) && (h == 0)) { d1=1; m1=m+1; y1=y; } else if ((d == 29) && (m == 2)) { d1 =1; m1 =3; y1 =y; } else if ((d == 28) && (m == 2) && (v!=0)) { d1 = 1; m1 = 3; y1 = y; } else{ d1 = d+1; m1 = m; y1 = y; } } return 0; }
Объяснение кода листинга программы
- В начале программы объявлены переменные: d, m, y, d1, m1, y1, v, h.
- Выводится сообщение с просьбой ввести дату в формате DD MM YYYY.
- С помощью функции scanf() пользователь вводит дату в формате DD MM YYYY.
- Переменная v получает остаток от деления y на 4.
- Если m равно 4, 6, 9 или 11, то h становится 0. В противном случае h становится 1.
- Если y меньше 0, то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
- Если m меньше 0 или больше 12, то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
- Если d меньше 0 или больше 31, то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
- Если ((h==0) && (d>30)), то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
- Если ((m==2) && (v==0) && (d>29)), то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
- Если ((m==2) && (v!=0) && (d>28)), то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
- Если все проверки пройдены успешно, то выполняется ввод даты d1, m1, y1.
- Значение переменной d1 становится равным d+1.
- Значение переменной m1 становится равным m.
- Значение переменной y1 становится равным y.
- Если d равно 31, то d1 становится 1, m1 становится m+1, y1 становится y.
- Если d равно 30 и h равно 0, то d1 становится 1, m1 становится m+1, y1 становится y.
- Если d равно 29 и m равно 2, то d1 становится 1, m1 становится 3, y1 становится y.
- Если d равно 28 и m равно 2 и v не равно 0, то d1 становится 1, m1 становится 3, y1 становится y.
- Если все проверки пройдены успешно, то d1 становится d+1, m1 становится m, y1 становится y.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д