Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Hadjito

Потребител
  • Регистрация

  • Последно онлайн

  1. Студент съм 1 ви Курс в ТУ софия и имам да изработя следната курсова задача: да се състави С програма, с която да се обработват изходните текстове на произволни С програми, записани като фаилови структури, като създава и извейда статистика върху нея. Програмата да се реалезира като програма тип "меню" с функционални възможности: 1. Избор на файл за обработка и създаване на файл( с избрано от потребителя име), съдърйащ данните от последвалата статистическа обработка: Избот на изходните текстове на обработваните С програми, от списък на всички текстови файлове с разширение .С-избора става с въвейдане името на фаила от клавиатурата. 2 Статистическа обработка на редовете от изходниа текст на С програмата, изразяваща се в: Процент на празните редове към общия брой редове( празните редове мойе да съдържат само интервали или табълации). 3. Статистическа обработка на символи в текста, както следва: Средният брой символи в програмния текст по редове. 4. Статистическа обработка на коментарии в текста: Да се определи % на коментираният текст спрямо целия текст на програмата. 5. Статистическа обработка на идентификатори: Общият брой на константите в изходния текст на С- програмата. 6. Обработка на текста на С програмата: Вмъкване на интервали в изходния текст - така че записът да е структуриран - всеки вложен блок да е с отстъпка с предварително избран брой интервали. Направил съм следния код и имам няколко въпроса към него, може ли да ми помогне някой. 1. Може ли да се използва съвместно работа с фаилове с/с++ Защото програмата трябва да е на С но аз съм използвал и библиотеки за С++. Как някой от от фунциите могат да се реализират само на "С" 2. Някой може ли да ми помогне за точка 6 защото не зная как точно да го направя. #include <sys/types.h> #include <dirent.h> #include <errno.h> #include <vector> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> char FileName[256]; // Broqchi za statistikite int cntEmtyLine = 0, cntAll = 0, cntComent = 0, cntConst = 0; void izborNaFile(); void stPrazniRedove(); void stIdentifikatori(); void stKomentari(); void stSimboliVteksta(); void obrabotkaNateksta(); int numCharsInFile( ifstream &in, int &numLines ); // funciq za 4etene na failovete v direktorita int getdir (string dir, vector<string> &files) { DIR *dp; struct dirent *dirp; if((dp = opendir(dir.c_str())) == NULL) { cout << "Error(" << errno << ") opening " << dir << endl; return errno; } while ((dirp = readdir(dp)) != NULL) { files.push_back(string(dirp->d_name)); } closedir(dp); return 0; } //getdir() int main(void) { int menu; fflush(stdin); printf("\n Dimitar Ivanov Hadjiev KCT, fakNo = ....."); /* Izbor na to4ka ot menuto */ do { printf("\n\n"); printf("Menu:\n"); printf("1.Izbor na fail za obrabotka i sazdavane na fail:\n"); printf("2.Statisticheska obrabotka na redovete ot izhodnia tekst na C programata, izrazqvashta se v:\n"); printf("3.Statisticheska obrabotka na simboli v teksta, kakto sledva:\n"); printf("4.Statisticheska obrabotka na komentarii v teksta:\n"); printf("5.Statisticheska obrabotka na identifikatori:\n"); printf("6.Obrabotka na teksta na C programata:\n"); printf("7.Exit\n"); scanf("%d", &menu); switch(menu) { case (1): izborNaFile(); break; case (2); stPrazniRedove(); break; case (3): stSimboliVteksta(); break; case (4): stKomentari(); break; case (5): stIdentifikatori(); break; case (6): obrabotkaNateksta(); break; case (7): default: break; } } while(menu != 7); return 0; } void izborNaFile() { /* string dir = string("."); vector<string> files = vector<string>(); getdir(dir,files); for (unsigned int i = 0;i < files.size();i++) { printf(files); printf("\n"; } */ struct ffblk ffblk; int done; printf("Pokazwane na failovete s razshirenie *.c\n"); done = findfirst("*.c", &ffblk, 0); while(!done) { printf(" %s\n", ffblk.ff_name); done = findnext(&ffblk); } printf("\n"); printf("\n Vavedi imeto na file: "); gets(FileName); }//izborNaFile() void stPrazniRedove() { int AllCntLine = 0; // broqch za ob]iq broi redove na faila float prc =0.00; FILE *file = fopen ( FileName, "r" ); if ( file != NULL ){ char line [ 128 ]; /* or other suitable maximum line size */ while ( fgets ( line, sizeof line, file ) != NULL ) {/* 4etene na edin red */ if (line == "") { // prazen red cntEmtyLine++; // otborqwa praznite reodve v faila } AllCntLine++; // fputs ( line, stdout ); /* Pokazvane na reda */ } fclose ( file ); } else { printf("\n Faila ne moje da se otvori!\n"); } prc = ((AllCntLine/cntEmtyLine)*100); printf("\n Procent na praznite redovete kam obshtiq broi redove: %f",prc); printf("\n"); } //stPrazniRedove() void stIdentifikatori() { size_t found; string str; FILE *file = fopen ( FileName, "r" ); if ( file != NULL ){ char line [ 128 ]; /* or other suitable maximum line size */ while ( fgets ( line, sizeof line, file ) != NULL ) {/* 4etene na edin red */ str(line); found=str.find("const"); if (found!=string::npos) cntConst++; // opredelq broq na kosntatnite v faila } fclose ( file ); } else { printf("\n Faila ne moje da se otvori!\n"); } prc = ((AllCntLine/cntConst)*100); printf("\n Statisticheska obrabotka na identifikatori, obsht broi na konstantite: %d",cntConst); printf("\n"); } //stIdentifikatori() void stKomentari() { size_t found; string str; int AllCntLine = 0; // broqch za ob]iq broi redove na faila float prc =0.00; FILE *file = fopen ( FileName, "r" ); if ( file != NULL ){ char line [ 128 ]; /* or other suitable maximum line size */ while ( fgets ( line, sizeof line, file ) != NULL ) {/* 4etene na edin red */ str(line); found=str.find("//"); if (found!=string::npos){ cntComent++; // opredelq broq na kometarite v faila } AllCntLine++; } fclose ( file ); } else { printf("\n Faila ne moje da se otvori!\n"); } prc = ((AllCntLine/cntComent)*100); printf("\n Statisticheska obrabotka na komentarii v teksta: %f",prc); printf("\n"); } //stKomentari() void stSimboliVteksta() { int nLines, nChars, avgCharsPerLine; ifstream inFile; inFile.open(FileName); if( !inFile.is_open() ) { printf("Faila ne moje da se otvori!"); exit (0); } nChars = numCharsInFile( inFile, nLines ); inFile.close(); avgCharsPerLine = nChars / nLines; printf("\n Sredniqt broi simvoli v programniq tekst po redove: %d",avgCharsPerLine); printf("\n"); } //stSimboliVteksta() // vzeto ot http://bytes.com/topic/c/answers/733757-word-count-problem int numCharsInFile( ifstream &in, int &numLines ) { int numChars = 0; char ch; // character holder; numLines = 0; // initialize the number of lines to zero while ( in.get(ch) ) // get the next character from the file // the function get will also get whitespace // i.e. blanks, tabs and end of line characters { if (ch != ' ' ) { if(ch != '\n') numChars++;// increase the count of characters by one if ch is NOT '\n' AND NOT a blank space else { numLines++; // increase the count of lines by one if ch IS '\n' } } } numLines += 1; // for some reason it needs to add one and the results are correct return numChars; // return the number of characters in the file } //numCharsInFile() void obrabotkaNateksta() { // ????? } //obrabotkaNateksta()

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.