- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
int main()
{
do
{
int i,f,kol,z=1;
char s1[MAX],s2[MAX],*ch=" .!?",*s3[MAX];
fflush(stdin);
do{puts("Vvedite vash text.");
gets(s1);}while((s1[0]==' ')||(s1[1]=='\n')||(s1[0]=='\0'));
strcpy(s2,s1);
s3[0]=strtok(s2,ch);
for(i=1;s3[i]=strtok(NULL,ch);i++)
{
}
f=i;
puts("Otsortirovannue slova.");
for(i=0,kol=0;i<f;i++)
{
if((*(s3[i])=='A')||(*(s3[i])=='a'))
{
printf("%s ",s3[i]);
kol++;
z=0;
}
}
if(z)puts("slov nety. =(");
printf("\nKollichestvo slov na 'A' ili 'a': %d",kol);
puts("\nvash text.");
puts(s1);
printf("\n");
printf("dlya povtora nathmite lubyi klavishu. dlya vuhoda ESC.\n\n");
}
while(getch()!=27);
}
Моя первая работа) Оцените) Правда я не помню что она делает)
Судя по коду, тебя самому главному не учили. Рекомендую почтитать "Code Complete", пока не поздно.
Обожаю сочетание этого стиля расстановки скобок и цикла do-while. Особенно если тело цикла длинное, и не входит на экран... Всегда создается впечатление, что там внизу вляпан пустой цикл, пока не посмотришь на то, чем начинается блок.
Вежливые люди заканчивают такие фразы двоеточием.
> puts("Otsortirovannue slova.");
Ага, отсортированные согласно их позиции в предложении. *facepalm.png*
> if(z)puts("slov nety. =(");
> printf("\nKollichestvo slov na 'A' ili 'a': %d",kol);
Где else? Да и вместо отдельного z можно было проверять !kol.
P.S. Menya diko besit translit. Iz-za nego ya bi labu ne zachol.
P.P.S. A za formatirovanie koda otorval by ruki.
Студенты его чинят не менее мерзкой функцией _rus, если я правильно помню.
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
)))))
chcp 1251
Я всегда буду обновлять тред перед отправкой комментария.
Я всегда буду обновлять тред перед отправкой комментария.
> SetConsoleCP(1251);
> SetConsoleOutputCP(1251);
написать не лень?
Скорее, лень разбираться, что такое locale
И русский язык то же.
при желании можно заменить на "Russian"
1) сишка
setlocale(LC_CTYPE, "");
вместо LC_CTYPE можно впихать LC_ALL
2) крестоблядство
std::locale::global(std::locale(""));
заметьте, насколько больше ненужной писанины в сраных крестах
Не было путнего инета, зато был диск с древним MSDN'ом... Поэтому в то время я винапи и прочее говно знал гораздо лучше стандартов сишечки. Да и писал в стиле "программиста на c/c++ под шиндовс".
P.S. В одной из лаб апишными функциями растянул окно до 1000х1000, дабы не писать выхлоп в файл...
P.S. На самом деле там для задачи хватило бы и 200х20.
> std::locale::global
> setlocale
ВИНДОПРОБЛЕМЫ
как, впрочем, и N страниц текста А4 в виде отформатированного правильным образом документа "описание программы", особенно когда сама лаба - на один пейдждаун
так сдавали свои говнолабы на модула-2 или ином мертвом языке терпеливые ребята на соседней кафедре
А они меня в школе бесили и я из принципа их не рисовал.
- <conio.h> нет в линуксе, пришлось менять getch() на getchar().
- Неправильно парсятся предложения, в которых есть запятая.
Вердикт: типичная унылая говнолаба, коих тыщи, треду минус.
Нет в *nix'ах.
А вообще это лютый пиздец:
- нет return в main'e
- <conio.h>
- main без параметров
- бешенное форматирование
- транслит
- 17-ая строка - цикл for, в условии которого присваивание (прям по K&R блядь)
- whitespaces - не хватает '\v', '\t', '\r'
- магическое число 27 (надо было define ESC_KEY 27)
Короче это нереальный пиздец. Надеюсь автор сейчас пишет намного лучше.
Разрешено стандартом.