Переделать с паскаля на си! - 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;
}

Объяснение кода листинга программы

  1. В начале программы объявлены переменные: d, m, y, d1, m1, y1, v, h.
  2. Выводится сообщение с просьбой ввести дату в формате DD MM YYYY.
  3. С помощью функции scanf() пользователь вводит дату в формате DD MM YYYY.
  4. Переменная v получает остаток от деления y на 4.
  5. Если m равно 4, 6, 9 или 11, то h становится 0. В противном случае h становится 1.
  6. Если y меньше 0, то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
  7. Если m меньше 0 или больше 12, то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
  8. Если d меньше 0 или больше 31, то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
  9. Если ((h==0) && (d>30)), то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
  10. Если ((m==2) && (v==0) && (d>29)), то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
  11. Если ((m==2) && (v!=0) && (d>28)), то выводится сообщение об ошибке ввода даты и предлагается повторить ввод.
  12. Если все проверки пройдены успешно, то выполняется ввод даты d1, m1, y1.
  13. Значение переменной d1 становится равным d+1.
  14. Значение переменной m1 становится равным m.
  15. Значение переменной y1 становится равным y.
  16. Если d равно 31, то d1 становится 1, m1 становится m+1, y1 становится y.
  17. Если d равно 30 и h равно 0, то d1 становится 1, m1 становится m+1, y1 становится y.
  18. Если d равно 29 и m равно 2, то d1 становится 1, m1 становится 3, y1 становится y.
  19. Если d равно 28 и m равно 2 и v не равно 0, то d1 становится 1, m1 становится 3, y1 становится y.
  20. Если все проверки пройдены успешно, то d1 становится d+1, m1 становится m, y1 становится y.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5