Yummy Elite Sausages

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Yummy Elite Sausages » Железо и Софт » Помогите по C++


Помогите по C++

Сообщений 1 страница 28 из 28

1

Нужно помощь... вот это я написал... она выводит какой был (будет) день недели если ввести месяц, день, год

Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>

//-------------------------
char bufRus [256];
char*Rus (const char*text) {
CharToOem(text, bufRus);
return bufRus;
}
//-------------------------
void main ()
{
  int day, month, year;
  int c, y;
  int m;
  int d;

  printf(Rus("Определения дня недели по дате\n");
  printf(Rus("Введите дату:день месяц год\n");
  printf(Rus("Например 5 12 201\n");

  printf(Rus("Введите:  день -> ");
  scanf("%i", &day);
  printf(Rus("         месяц -> ");
  scanf("%i", &month);
  printf(Rus("          год-> ");
  scanf("%i", &year);

  if(month==1 || month==2)
   year--;     //январь и февраль относятся к предыдущим
  m=month - 2;    //год начинается с марта

  if (m<=0) m+=12;   //для января и февраля
                     //m - номер месяца по римскому
  c = year/100;
  y = year - c*100;

  d = (day+(13*m-1)/5+y+y/4+c/4-2*c+777)%7;

  switch (d)
  {
     case 1: printf(Rus("Понедельник/n"); break;
     case 2: printf(Rus("Вторник/n"); break;
  case 3: printf(Rus("Среда/n"); break;
  case 4: printf(Rus("Четверг/n"); break;
        case 5: printf(Rus("Пятница/n"); break;
        case 6: printf(Rus("Суббота/n"); break;
  case 0: printf(Rus("Воскресенье/n"); break;
  }
  getch();
}


Мне задали задачку сделать так что бы при вводе неправильной даты. Например 56 декабря 1987 года выводило что данного дня не существует

З.Ы в с++ я новичок... кирпичами не кидаца

Отредактировано Xander (2009-02-23 20:35:11)

0

2

do{
printf(Rus("Введите:  день -> ");
scanf("%i", day);
while(day >=31);

с омтальными и более совершенными условиями разберёшься я думаю (:

Отредактировано MrCerf (2008-12-20 16:44:53)

0

3

можешь сделать массив количества дней во всех месяцах типа
int monthdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};
и так далее.. потом при проверке после того как впишет месяц можно и количество дней проверять
(day > months[month])

Отредактировано MrCerf (2008-12-20 16:48:27)

0

4

проверка на високосный год будет чтонить типа такого
int x=(((year % 4)==0) && (((year % 100)!=0) || ((year % 400)==0)));

0

5

Спасибо, сейчас будем пробывать ;)

0

6

тока я там перед while фигурную скобку забыл.. (:

0

7

ну я ее сначала искал =)) так и не нашел))

0

8

В общем появились какие то проблемы, у меня стоит 2008 Визуал, а в инсте где писал там старая версия, сейчас не припомню, так вот...
http://img187.imageshack.us/img187/6666/85555956cb0.th.jpg

В инсте все без проблем запускалась а тут ошибки что скобка пропущена... Просмотрел да вроде как было... Но я добавил библиотеку <stdafx.h> ибо в начале он у меня ее запросил... может я что то накосячил =\

0

9

ну всё верно, скобки пропущены

0

10

все исправил, тока вот то что ты скинул показывает тут синтакс ерор в слове сканф

Код:
scanf("%i", day);


И вот тут выводит ошибку

Код:
CharToOem(text, bufRus);


"CharToOemW cannot convert parameter 1 from 'const char *' to 'LPCWSTR' "

Первый раз с такой сталкиваюсь =*(

0

11

опаопа да наш даник мегапрограммист)))

printf/scanf - это не по-батьковски

подключаешь
#include <iostream.h>
#include <conio.h>
и юзаешь cin и cout

и еще функцию сделай, типа

int inputday(void)
{
int day;
cout<<"Enter day";
cin>>day;
return day;
}

потом будешь вызывать ее када нада и будешь крутым)
еще и в досе все будет пахать))

Отредактировано ImP (2008-12-20 19:10:46)

0

12

scanf("%i", &day);

второе хз... попробуй так, вдруг получится
CharToOem((LPCTSTR)text, bufRus);

0

13

MrCerf, не помогло.
Imp, что то ты меня немного озадачил или я такой долпайоп что не могу сделать задачку первого курса =\

з.ы так сейчас скоро кв... потом разберусь (попытаюсь)

Отредактировано Onizuka (2008-12-20 20:35:58)

0

14

const char* Rus(char *text) {
char bufRus[256];
CharToOem(text, bufRus);
return bufRus;
}

Отредактировано MrCerf (2008-12-20 21:10:48)

0

15

хехе просто объектно-ориентированное программирование с юзанием классов рулит))
но на первом курсе у нас тоже printf/scanf было, так что это нормально)))))

0

16

imp забыл using namespace std;
или каждый раз std: cout cin итд (:

0

17

задроты

0

18

пингвин нас победил о_0

0

19

буэээ

0

20

щас тебе скину свой автоэкзек , поможет !

cl_showfps "1"
zoom_sensitivity_ratio "0.7"
con_color "0 255 0"
ex_interp "0.1"
cl_cmdrate "100"
cl_updaterate "100"
rate "25000"
hud_fastswitch "1"
cl_dynamiccrosshair "0"
hud_centerid "1"
sensitivity "1.5"

Еще в свойствах ярлычка пропиши :

-noforcemparms -noforcemaccel

Отредактировано SEX (2008-12-21 15:18:56)

0

21

int 21h
аминь

Отредактировано batman (2008-12-21 16:25:08)

0

22

Hello world!

0

23

канеш всех уже выгнали с учаг и т.п. и всем похеру и все не актуально что тут писали и вообще, но MrCerf написал ерунду:

const char* Rus(char *text) {
char bufRus[256];
CharToOem(text, bufRus);
return bufRus;
}

типа ты тут возвращаешь указатель на уже мертвый массив, если впадлу переписывать можно сделать вместо:

char bufRus[256];

это:

static char bufRus[256];

0

24

вот оно, эстонское образование  :angry:

0

25

или меня глючит, или ты в принтфках скобки не позакрывал О_о

0

26

это я исправил.
В общем там формула должна быть какая то, но ее почти доделали =)

0

27

предположим вот так:

Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>

//-------------------------
static char bufRus [256];
char*Rus (const char*text) {
CharToOem(text, bufRus);
return bufRus;
}
//-------------------------
int main ()
{
 int day, month, year;
 int c, y;
 int m;
 int d;

 printf(Rus("Определения дня недели по дате\n"));
 printf(Rus("Введите дату:день месяц год\n"));
 printf(Rus("Например 5 12 201\n"));

 printf(Rus("Введите:  день -> "));
 scanf("%i", &day);
 printf(Rus("         месяц -> "));
 scanf("%i", &month);
 printf(Rus("          год-> "));
 scanf("%i", &year);
int monthdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};


if((day <= monthdays[month]) || (month<=12))
{

 if((month==1) || (month==2))
  year--;     //январь и февраль относятся к предыдущим
 m=month - 2;    //год начинается с марта

 if (m<=0) m+=12;   //для января и февраля
                    //m - номер месяца по римскому
 c = year/100;
 y = year - c*100;
 d = (day+(13*m-1)/5+y+y/4+c/4-2*c+777)%7;

 switch (d)
 {
    case 1: printf(Rus("Понедельник/n")); break;
    case 2: printf(Rus("Вторник/n")); break;
 case 3: printf(Rus("Среда/n")); break;
 case 4: printf(Rus("Четверг/n")); break;
       case 5: printf(Rus("Пятница/n")); break;
       case 6: printf(Rus("Суббота/n")); break;
 case 0: printf(Rus("Воскресенье/n")); break;
 }
 getch();
return 0;
}
}
else 
return -1;
}


нэ?

Отредактировано Nok!a (2009-01-14 20:12:24)

0

28

а как же високосный год?

0


Вы здесь » Yummy Elite Sausages » Железо и Софт » Помогите по C++