Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2009, 23:48   #1
Grigorius
Новичок
Джуниор
 
Аватар для Grigorius
 
Регистрация: 26.03.2009
Сообщений: 2
Подмигивание Операции с датами...

Мне нужно немного вашой помощи,я только начальный програмист...и пока не освоМне нужно немного вашой помощи,я только начальный програмист...и пока не освоел всю суть програмирувание....

Сама суть програмы, операции с датами, то есть: добавление к дате целого числа, вычитание от даты целого числа, вычитание от одной дать другой. Вот сама програма но она некоректно роботает..
Код:
#include<stdio.h>
#include<math.h>
int PLUS(int c,auto b){
int z;
z=c+b;
return(z);
}
int MINUS(int c,int b){
int z;
z=c-b;
return(z);
}
int CHISLO(int c){
do{
gotoxy(0,2);
printf("\nВведiть число__ ");
scanf("%2d",&c);
if(c>31)
printf("\n\n\nНевiрне число");}
while(c>31);
return(c);}
int MISYAC(int m){
do{
gotoxy(0,4);
printf("\nВведiть мiсяць__ ");
scanf("%2d",&m);
if(m>12)
printf("\nНевiрний мiсяць");}
while(m>12);
return(m);}
int RIK(int r){
do{
gotoxy(0,6);
printf("\nведiть рiк__ ");
scanf("%d",&r);
if(r<1992)
printf("Рiк повинен бути бiльше 1992");}
while(r<1992);
gotoxy(0,6);
return(r);}
int PER(int c,int m,int r){
int b,h,m1,r1,c1,z;
c1=CHISLO(c);
m1=MISYAC(m);
r1=RIK(r);
r=(r1-1992)*365;
if(r%4==0){
z=29;}
else{
z=28;}
if(m1==1){
b=0;}
if(m1==2){
b=31;}
if(m1==3){
b=31+z;}
if(m1==4){
b=31+z+31;}
if(m1==5){
b=31+z+31+30;}
if(m1==6){
b=31+z+31+30+31;}
if(m1==7){
b=31+z+31+30+31+30;}
if(m1==8){
b=31+z+31+30+31+30+31;}
if(m1==9){
b=31+z+31+30+31+30+31+31;}
if(m1==10){
b=31+z+31+30+31+30+31+31+30;}
if(m1==11){
b=31+z+31+30+31+30+31+31+30+31;}
if(m1==12){
b=31+z+31+30+31+30+31+31+30+31+30;}
h=r+b+c1;
return(h);}
void main(){
textcolor(WHITE);
clrscr();
int menu,m,z2,b,b1,k,k1,l1,l,l2,l3,l4,l5;
int c,z,c1,m1,r1,r,z1,x,y,c2,m2,r2,c3,m3,r3;
printf("\n\t\t1--Додавання цiлого числа до дати\n\t\t2-Вiднiмання цiлого числа вiд дати\n\t\t3-Рiзниця дат\n\t\t4-ВИХIД\n");
scanf("%d",&menu);
switch(menu){
case 1:{clrscr();
b=PER(c,m,r);
printf("\nВведiть число яке потрiбно додати__ ");
scanf("%d",&k);
z=PLUS(b,k);
printf("\nВ днях----> %d",z);
l=z/365+1992;
l1=z%365;
l2=l1%30;
printf("\n\n\nОтримаэмо дату----> %d .%d .%d ",l,l1,l2);
break;}
case 2:{clrscr();
b1=PER(c1,m1,r1);
printf("Введiть число яке потрiбно вiдняти__ ");
scanf("%d",&k1);
z1=MINUS(b1,k1);
l3=z/365+1992;
l4=z%365;
l5=l1%30;
printf("в днях--- %d",z1);
printf("\n\n\n\n%d.%d .%d ",l3,l4,l5);
break;}

case 3:{ clrscr();
printf("\nВведiть першу дату: ");
x=PER(c3,m3,r3);
printf("\nВведiть другу дату: ");
y=PER(c2,m2,r2);
if(x>y){
z2=MINUS(x,y);}
else{
z2=MINUS(y,x);}
l=z/365+1992;
l1=z%365;
l2=l1%30;
printf("В днях----%d",z2);
printf("\n\n\n\nОтримаэмо дату %d.%d .%d ",l,l1,l2);
break;}

case 4:{clrscr();
printf("\n\n\n\n\t\t\t ВИХIД");
break;}
}
getch();
}

Последний раз редактировалось MaTBeu; 27.03.2009 в 23:44.
Grigorius вне форума Ответить с цитированием
Старый 27.03.2009, 00:05   #2
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

И еще просьба... Пожалуйста, очень прошу, учитывайте правила форматирования кода... ну правда, смотришь эту кашу, и хоть вешайся, хоть плачь... сразу закрываешь страницу от греха подальше...

гораздо проще помочь, если код оформлен аккуратно...
wyvern@localhost:~$ sudo emerge --unmerge world
wyvern вне форума Ответить с цитированием
Старый 27.03.2009, 00:12   #3
Grigorius
Новичок
Джуниор
 
Аватар для Grigorius
 
Регистрация: 26.03.2009
Сообщений: 2
По умолчанию

извините, пока неосвоел оформл...

А можна как то покорче написать эту програму?

Последний раз редактировалось MaTBeu; 27.03.2009 в 23:45.
Grigorius вне форума Ответить с цитированием
Старый 30.03.2009, 19:00   #4
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию

Ну по крайней мере от множественного использование if 'ов поможет оператор case of.
bondik вне форума Ответить с цитированием
Старый 30.03.2009, 19:55   #5
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

2bondik
В С++ нету оператора case of. Есть switch и case.
MaTBeu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операции с датами в Access 2003 Elvisnya Microsoft Office Access 9 17.01.2012 11:21
Операции с датами. mrtnt PHP 3 20.09.2008 01:16
Работа с датами Tanuska___:) БД в Delphi 6 18.09.2008 13:56
Работа с датами SanekIrk Общие вопросы Delphi 5 11.07.2008 22:01
работа с датами kolduev Помощь студентам 6 27.02.2008 19:54