
19.11.2009, 15:03
|
|
Новичок
Регистрация: 21.12.2006
Сообщений: 5
Провел на форуме: 33140
Репутация:
0
|
|
спасайте..
написал программу на С++ которая высчитывает дни недели.
стал писать защиту от дураков, но доделать её немогу.
нужно сделать чтоб программа учитывала весокосные года и при ошибке писала что вы ошиблись.
идейки есть( но к сажалению языка незнаю( ибо в универе прошлом учил паскаль(
завтра сдавать а я низнаю как сделать(
PHP код:
#include <stdio.h>
#include <windows.h>
#include <math.h>
#include <conio.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 2001\n"));
printf(Rus("ВВедите: Месяц ->\n"));
scanf("%i", &month);
//__________________________Защита________________________________
while (month>12)
{
if (month>12)
{printf(Rus("Дибил, ошибся, попробуй ещё ->\n"));
scanf("%i", &month); }
else break;
}
//__________________________________________________________
printf(Rus("ВВедите: День ->\n"));
scanf("%i", &day);
//__________________________Защита________________________________
while (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if (day>31)
{printf(Rus("Дибил, ошибся, попробуй ещё ->\n"));
scanf("%i", &day);}
else break;
}
while (month==2)
{
if (day>29)
{printf(Rus("Дибил, ошибся, попробуй ещё ->\n"));
scanf("%i", &day);}
else break;
}
while (month==4||month==6||month==9||month==11)
{
if (day>30)
{printf(Rus("Дибил, ошибся, попробуй ещё ->\n"));
scanf("%i", &day);}
else break;
}
//__________________________________________________________
printf(Rus("ВВедите: Год ->\n"));
scanf("%i", &year);
if (month==1||month==2)
year--;
m=month - 2;
if (m<=0) m+=12;
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 ();
}
|
|
|

17.11.2009, 18:10
|
|
Познающий
Регистрация: 02.09.2007
Сообщений: 67
Провел на форуме: 521298
Репутация:
20
|
|
Отсев.
Удалить в заданном массиве х(н) "лишные" элементы
кроме первого так, чтобы оставшиеся образовали
возрастающую последовательность (за один просмотр массива).
Сделал все, кроме упорядочивания. Подскажите как массив упорядочить за один просмотр массива или реализовать удаление и сортировку за один просмотр.
Код:
Program sdvig;
type
Mas=array [0..99] of integer;
Procedure vvod(Var m:Mas; Var kolvo:integer);
Var i:integer;
begin
repeat
write('Vvedite kolvo elementov:');
readln(kolvo);
until kolvo>0;
for i:=1 to kolvo do
begin
write('element:');
read(m[i]);
end;
end;
Procedure udalenie(Var m:Mas; Var element:integer;Var kolvo:integer);
Var i:integer;
Begin
for i:=element to kolvo do
Begin
m[i]:=m[i+1];
End;
kolvo:=kolvo-1; //не отображать нуль-элемент массива
End;
var i,m,kolvo,element:integer;
accept:string;
n:mas;
Begin
vvod(n,kolvo);
repeat
writeln('Vvedite Nomer elementa');
readln(element);
udalenie(n,element,kolvo);
writeln('Massiv:');
for i:=1 to kolvo do
write(n[i],' ');
writeln(' ');
writeln('Udalit esho 1 element massiva?');
writeln('Yes/no?');
repeat
read(accept);
until (accept='no') or (accept='yes') ;
until accept = 'no';
end.
|
|
|

17.11.2009, 19:56
|
|
Новичок
Регистрация: 08.11.2008
Сообщений: 9
Провел на форуме: 28743
Репутация:
-5
|
|
Такая ситуация, срочно пришлось переводиться в универе в другую группу посреди семестра - и нужно срочно сдать лабу на с++, а я изучал си чистый, поэтому прошу вашей помощи. Задание такое:
Написать программу учета заявок на обмен квартир и поиска вариантов обмена.
Каждая заявка содержит фамилию и инициалы заявителя, а также сведения о двух квартирах: требуемой (искомой) и имеющейся. Сведения о каждой квартире содержат: количество комнат, площадь, этаж, район.
Программа должна обеспечивать выбор с помощью меню и выполнение следующих функций:
1) ввод заявки на обмен;
2) поиск в картотеке подходящего варианта: при совпадении требований и предложений по количеству комнат и этажности и различии по показателю «площадь» в пределах 10% выводится соответствующая карточка и удаляется из списка, в противном случае поступившая заявка включается в картотеку;
3) вывод всей картотеки.
Хранение данных организовать с применением контейнерного класса set.
Пример выполнения лабы есть в архиве
Пишите на почту [velvetdust(собака)yandex.ru], за сколько готовы сделать, я вам отвечу.
P.S. Ребята говорят, что препод особенно любит блок-схемы, так что вот их важно сделать четко, как в примере...
высокая закомментированность кода приветствуется)
|
|
|

18.11.2009, 13:41
|
|
Новичок
Регистрация: 16.05.2009
Сообщений: 12
Провел на форуме: 43574
Репутация:
0
|
|
помогите, пожалуйста.
нужно написать cgi приложение на С++, которое делает следующее:
В каждом слове текста k-ю букву заменить заданным символом. Если k больше длины слова, корректировку не выполнять.
Заранее большое спасибо!
|
|
|

19.11.2009, 17:57
|
|
Постоянный
Регистрация: 31.07.2008
Сообщений: 370
Провел на форуме: 2866942
Репутация:
350
|
|
Ну например
Код:
int god;
if (god%4==0)
printf("Год высокосный");
походу так
Дальше спихнуть в свой код сам думаю сможеш=)
|
|
|

19.11.2009, 18:06
|
|
Участник форума
Регистрация: 20.02.2009
Сообщений: 183
Провел на форуме: 719582
Репутация:
50
|
|
Задача на Паскале: ........, Если масисив не упорядочен, то определить длину упорядоченной часта массива.
я делаю так
Код:
t:=0;
for i:=0 to n do
begin
if m[i]<m[i+1] then k:=k+1
else
begin
if t<k then
begin
t:=k;
k:=1;
end
И если масив состоит из 12123123451
Выведет 5, т.к. это самая длинная упорядочена часть масива.
Но если 12123123456
То выведет 3, т.е. оно у меня не правильно считает, потому что не выполняется условие f m[i]<m[i+1]
Как сделать что бы нормально считало?
Последний раз редактировалось warkk; 19.11.2009 в 20:29..
|
|
|

19.11.2009, 20:38
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
Сообщение от warkk
Задача на Паскале: ........, Если масисив не упорядочен, то определить длину упорядоченной часта массива.
я делаю так
Код:
t:=0;
for i:=0 to n do
begin
if m[i]<m[i+1] then k:=k+1
else
begin
if t<k then
begin
t:=k;
k:=1;
end
И если масив состоит из 12123123451
Выведет 5, т.к. это самая длинная упорядочена часть масива.
Но если 12123123456
То выведет 3, т.е. оно у меня не правильно считает, потому что не выполняется условие f m[i]<m[i+1]
Как сделать что бы нормально считало?
i:=2;
while (mas[i-1] <= mas[i] )and(i<=masLength) do
inc(i);
if i = 2 then write('dlina uporyad 1')
else write('dlina uporyad 1',i)
я бы делал примерно так.

|
|
|

19.11.2009, 18:09
|
|
Постоянный
Регистрация: 31.07.2008
Сообщений: 370
Провел на форуме: 2866942
Репутация:
350
|
|
Смотри. у тебя переменная t:=0
В условии if t>k then
begin
t:=k;
k:=1;
end
она всё время меньше k будет
|
|
|

19.11.2009, 18:12
|
|
Участник форума
Регистрация: 20.02.2009
Сообщений: 183
Провел на форуме: 719582
Репутация:
50
|
|
Но ведь во второй раз она может быть и больше k. Просто мне нужно самую длинную упорядоченную часть масива. Вдруг эта часть будет меньше предыдущей упорядоченной части.
|
|
|

19.11.2009, 18:15
|
|
Постоянный
Регистрация: 31.07.2008
Сообщений: 370
Провел на форуме: 2866942
Репутация:
350
|
|
Ты меня конешно извини, но я упор не вижу что бы твоя перемення t где нибудь увеличивалася
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|