Блок схема.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Ch3ck, 18 Apr 2009.

  1. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,181
    Reputations:
    430
    Мужики вери нид хэлп(выручайте короче:))...
    Завтра нужно сдавать курсовик, а эти блок-схемы вообще забыл как рисовать...
    Вот постановка задачи:
    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;
    }
    
    Помогайте рисовать...
     
    1 person likes this.
  2. оlbaneс

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,372
    Likes Received:
    1,086
    Reputations:
    356
    оффтоп, конечно же, но не смог удержаться. при написании кода для большего понимания сначала рисуется схема, а потом уже сам код.
     
    _________________________
  3. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,181
    Reputations:
    430
    Это только в книжках так пишут...
    Ну может кто-то знает...
     
  4. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Ещё один оффтоп - Блок-схемы никто никогда и нигде не рисует, не считая придурошных преподов заставляющих это делать несчастных студентов.
     
    2 people like this.
  5. оlbaneс

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,372
    Likes Received:
    1,086
    Reputations:
    356
    ну может не блок-схема, но на бумажке я иногда рисую что куда должно обращаться.
    бывает сел писать и по ходу пьесы запутался как хотел исполнить.
     
    _________________________
    2 people like this.
  6. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    ээ переменные в прямоугольнике, в ромбе if, начало что-то типа овала тагже как и конец
     
  7. kfor

    kfor Elder - Старейшина

    Joined:
    1 Sep 2005
    Messages:
    278
    Likes Received:
    48
    Reputations:
    29
    http://ru.wikipedia.org/wiki/Блок-схема
     
  8. .ATK

    .ATK Active Member

    Joined:
    20 Feb 2009
    Messages:
    143
    Likes Received:
    111
    Reputations:
    9
    ))ппц, в крупных компаниях их рисуют чувак...
     
    1 person likes this.
  9. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,181
    Reputations:
    430
    kfor... меня удивляют такие люди как ты (не в обиду...)
    Я попросил добрых людей нарисовать...
     
  10. kfor

    kfor Elder - Старейшина

    Joined:
    1 Sep 2005
    Messages:
    278
    Likes Received:
    48
    Reputations:
    29
    Нарисовать что? По твоей проге блоксхему?
    Ты написал что подзабыл как рисовать, а не ясно попросил что бы люди тебе нарисовали.
     
  11. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,181
    Reputations:
    430
    Просил и прошу, чтобы нарисовали...
     
  12. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Чувак, я знаю о чём говорю.
     
    #12 Qwazar, 19 Apr 2009
    Last edited: 19 Apr 2009
  13. SmanxX1

    SmanxX1 Elder - Старейшина

    Joined:
    4 Aug 2008
    Messages:
    27
    Likes Received:
    6
    Reputations:
    2
    Да больше похоже, что ты нифига не знаешь.
    Блок-схемы часто используются, т.к. это один из этапов проектирования крупного ПО.
     
  14. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Что ещё интересного расскажешь? :D

    Ладно отвечу по серъёзному :) За свои 5 лет работы программистом в компаниях (фриланс и мини-конторы не считаю) я ни разу не видел чтобы кто нибудь рисовал блок-схемы. Почему?

    1) Потому что они неудобны и излишне детализированы. А разработка - процесс динамичный, и программы постоянно меняются.
    2) Заточены под процедурный подход, а сейчас какбы и подход к программированию меняется.
    3) Их рисование заняло бы больше времени чем разработка самой программы, к тому-же п. 1 - программы меняются, и каждое изменение надо было бы ещё отображать в блок-схеме. А современное программирование направлено на получение прибыли, т.е. лишнее время тратить никто не любит и не будет.

    В наше время во многих компаниях используются UML, но он на блок-схемы не похож. И тоже используется во многих компаниях только на этапе написания документации. (Видел только на одном проекте, да и то - требования заказчика). У UML кстати таже проблема - диаграммы надо всегда перерисовывать.

    Обычно всё ограничивается небольшими набросками, из авторских кубиков и стрелочек с очень слабой детализацией и диаграммой классов, которая конечно со временем будет меняться.
     
    #14 Qwazar, 19 Apr 2009
    Last edited: 19 Apr 2009
  15. SmanxX1

    SmanxX1 Elder - Старейшина

    Joined:
    4 Aug 2008
    Messages:
    27
    Likes Received:
    6
    Reputations:
    2
    Ничего.
    Хотя, может быть ты когда-нибудь закончишь школу и таки устроишься уборщиком в нормальную компанию, где глядя через спины сидящих программеров, ты увидишь, что все-таки блок-схемы используютcя. xD

    Именно! Но на UML, трудно показать показать действие какого-либо алгоритма, точнее не трудно, а менее информативно, скажем так, поэтому в отдельных случаях используются блок-схемы.
     
    #15 SmanxX1, 19 Apr 2009
    Last edited: 19 Apr 2009
  16. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Не именно, на UML вообще показывают не то, что пытаются показать блок-схемами в школах. UML используют для изображения архитектуры. Блок-схемы для рисования какой нибудь конкретной процедуры.

    И:

    1) За 5 лет я блок схемы не видел ни разу, ни в России ни за рубежом.
    2) При поиске гуглом слова "блок-схема" ссылки только на школы, вузы и учебные языки а-ля Pascal, C++ Builder.

    P.S.
    Комментарий про школьника прошу убрать.
     
  17. SmanxX1

    SmanxX1 Elder - Старейшина

    Joined:
    4 Aug 2008
    Messages:
    27
    Likes Received:
    6
    Reputations:
    2
    Я тебя не понимаю, честно. -/
    Ты сам себе противоречишь.
    Не обязательно.

    Да что ты заладил?! Раз не видел, значит не довелось еще.
    В теме сказали, что они используются в "крупных" компаниях, я тоже поддерживаю это утверждение, а раз так, то очевидно с ними приходилось сталкиваться. Не просто так(из головы) же это написали. ;)

    П.С. Предлагаю прекратить этот оффтоп.
     
    1 person likes this.
  18. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,181
    Reputations:
    430
    И нарисовать мне схему... :)
     
  19. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 Qwazar Как говорила моя преподша по програмированию - Блок схема - это голубиный(или птичий) язык. Блоксхема работы бота :-D :-D
    А вообще я видел года 4 назад даже спец прожку для составления блок схем. Так что блок схемы еще живы и будут жить, пока будут жить совдеповские преподы и учебники по которым этому учат.
     
    1 person likes this.
  20. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Разницу между архитекутрой приложения, и конкретным алгоритмом реализованым в процедуре чувствуешь? (со всеми условными операторами, вызовами, объявлениями переменных, где после каждого CR и BF надо всё перерисовывать нафиг)
    Мне приходилось. Их там не используют. Почему, я написал выше + то что можно реализовать в блок-схеме - проще просто закодить, а иначе это не блок-схема, а взрыв на макаронной фабрике.
     
    2 people like this.