Мужики вери нид хэлп(выручайте короче)... Завтра нужно сдавать курсовик, а эти блок-схемы вообще забыл как рисовать... Вот постановка задачи: Code: Написать программу, которая открывает текстовый файл-список, содержащий имена файлов по одному на строке. Программа подсчитывает количество предложений во всех файлах и выводит предложения в другой файл по одному на строке в порядке уменьшения длины. Вот сам код: Code: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> char *filename; char *tmp_str; char *result_str; FILE *open_f; FILE *result_f; char **str_array; int i, j, count, ind, max, length, jlen; FILE *file_list; FILE *result; char list_path[256]; void rus (char*src) { char dst[256]; CharToOem(src,dst); printf("%s\n", dst); } int main(int argc, char *argv[]) { filename = (char*)malloc(256); tmp_str = (char*)malloc(1024); result_str = (char*)malloc(1024); str_array = (char**)malloc(8192); i = 0; j=0; count = 0; rus("Введите имя файла содержащего пути к другим файлам:"); scanf("%s", list_path); file_list = fopen(list_path, "r"); if(!file_list) { perror("Error opening file\n"); return -1; } while(!feof(file_list)) { fscanf(file_list, "%s\n", filename); // \n - to avoid the new line symbol printf("Opening %s\n", filename); open_f = fopen(filename, "r"); if(!open_f) { perror("Error opening file\n"); return -1; } //read files by word //strcat combines words to expressions strcpy(result_str,""); //clear string while(!feof(open_f)) { fscanf(open_f, "%s", tmp_str); if((strchr(tmp_str,'.') == NULL) && (strchr(tmp_str,'!') == NULL) && (strchr(tmp_str,'?') == NULL)) { strcat(result_str, tmp_str); strcat(result_str, " "); continue; } else { strcat(result_str, tmp_str); } str_array[i] = (char*)malloc(strlen(result_str)); strcpy(str_array[i++], result_str); strcpy(result_str,""); //clear string } fclose(open_f); } fclose(file_list); count = i; for(j=0;j<count;j++) rus(str_array[j]); printf("\n\n\n\n"); for(i=0;i<count;i++) { ind = i; length = strlen(str_array[i]); max =0; for(j=i+1;j<count;j++) { jlen = strlen(str_array[j]); if(jlen > length && jlen > max) { ind = j; max = jlen; } } if(ind != i) { strcpy(tmp_str, str_array[ind]); strcpy(str_array[ind], str_array[i]); strcpy(str_array[i], tmp_str); } } for(j=0;j<count;j++) rus(str_array[j]); rus("Запись в результирующий файл"); result = fopen("result_file.txt","w"); for(j=0;j<count;j++) { fprintf(result, "%s\n", str_array[j]); free(str_array[j]); } fclose(result); return 0; } Помогайте рисовать...
оффтоп, конечно же, но не смог удержаться. при написании кода для большего понимания сначала рисуется схема, а потом уже сам код.
Ещё один оффтоп - Блок-схемы никто никогда и нигде не рисует, не считая придурошных преподов заставляющих это делать несчастных студентов.
ну может не блок-схема, но на бумажке я иногда рисую что куда должно обращаться. бывает сел писать и по ходу пьесы запутался как хотел исполнить.
Нарисовать что? По твоей проге блоксхему? Ты написал что подзабыл как рисовать, а не ясно попросил что бы люди тебе нарисовали.
Да больше похоже, что ты нифига не знаешь. Блок-схемы часто используются, т.к. это один из этапов проектирования крупного ПО.
Что ещё интересного расскажешь? Ладно отвечу по серъёзному За свои 5 лет работы программистом в компаниях (фриланс и мини-конторы не считаю) я ни разу не видел чтобы кто нибудь рисовал блок-схемы. Почему? 1) Потому что они неудобны и излишне детализированы. А разработка - процесс динамичный, и программы постоянно меняются. 2) Заточены под процедурный подход, а сейчас какбы и подход к программированию меняется. 3) Их рисование заняло бы больше времени чем разработка самой программы, к тому-же п. 1 - программы меняются, и каждое изменение надо было бы ещё отображать в блок-схеме. А современное программирование направлено на получение прибыли, т.е. лишнее время тратить никто не любит и не будет. В наше время во многих компаниях используются UML, но он на блок-схемы не похож. И тоже используется во многих компаниях только на этапе написания документации. (Видел только на одном проекте, да и то - требования заказчика). У UML кстати таже проблема - диаграммы надо всегда перерисовывать. Обычно всё ограничивается небольшими набросками, из авторских кубиков и стрелочек с очень слабой детализацией и диаграммой классов, которая конечно со временем будет меняться.
Ничего. Хотя, может быть ты когда-нибудь закончишь школу и таки устроишься уборщиком в нормальную компанию, где глядя через спины сидящих программеров, ты увидишь, что все-таки блок-схемы используютcя. xD Именно! Но на UML, трудно показать показать действие какого-либо алгоритма, точнее не трудно, а менее информативно, скажем так, поэтому в отдельных случаях используются блок-схемы.
Не именно, на UML вообще показывают не то, что пытаются показать блок-схемами в школах. UML используют для изображения архитектуры. Блок-схемы для рисования какой нибудь конкретной процедуры. И: 1) За 5 лет я блок схемы не видел ни разу, ни в России ни за рубежом. 2) При поиске гуглом слова "блок-схема" ссылки только на школы, вузы и учебные языки а-ля Pascal, C++ Builder. P.S. Комментарий про школьника прошу убрать.
Я тебя не понимаю, честно. -/ Ты сам себе противоречишь. Не обязательно. Да что ты заладил?! Раз не видел, значит не довелось еще. В теме сказали, что они используются в "крупных" компаниях, я тоже поддерживаю это утверждение, а раз так, то очевидно с ними приходилось сталкиваться. Не просто так(из головы) же это написали. П.С. Предлагаю прекратить этот оффтоп.
2 Qwazar Как говорила моя преподша по програмированию - Блок схема - это голубиный(или птичий) язык. Блоксхема работы бота :-D :-D А вообще я видел года 4 назад даже спец прожку для составления блок схем. Так что блок схемы еще живы и будут жить, пока будут жить совдеповские преподы и учебники по которым этому учат.
Разницу между архитекутрой приложения, и конкретным алгоритмом реализованым в процедуре чувствуешь? (со всеми условными операторами, вызовами, объявлениями переменных, где после каждого CR и BF надо всё перерисовывать нафиг) Мне приходилось. Их там не используют. Почему, я написал выше + то что можно реализовать в блок-схеме - проще просто закодить, а иначе это не блок-схема, а взрыв на макаронной фабрике.