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

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

Kaldata.com - Форуми

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

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

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Помощ: Курсова задача на С

Featured Replies

След известно мислене по задачата реших да потърся помощ. Част от задачата съм тествал. Друга част не успях поради ограничените ми знания. Задачата е:

Да се състави програма ©, организирана като меню, която чете текстов файл, записва резултатите във файл (потребителят трябва да въведе имената на двата файла) и има следните възможности:

• Определяне на най-често срещаният във файла символ

• Определяне на най-често срещаната дума

• Определяне броя на символите във файла

• Определяне на най-дългият и най-късият ред във файла

Възможностите на програмата да се реализират чрез отделни функции. Четенето от файла да става по редове.

Все още съм начинаещ. Притесняват ме главно първите 2 функции. Switch-a от менюто ще има допълнителна обработка, зададените стойности са за проба на програмата. Написал съм част от нея(менюто с проверките и едната функция):

#include <stdio.h>
#include <ctype.h>
FILE *fp;
FILE *fp2;
int commSymb(FILE *fp, char *filename); //функция, определяща най-често срещания символ във файла
int commWord(FILE *fp, char *filename); // функция, определяща най-често срещаната дума във файла
int sum(FILE *fp, char *filename); //функция, определяща броя на символите във файла
int longshort(FILE *fp, char *filename); //функция, определяща най-дългия и най-късия ред във файла
main()
{  
        char option;
	char filename[28]; //съдържа името на първия файл
	char filename2[28]; //съдържа името на втория файл
	printf("Enter the name of the file (read from): ");
	gets(filename);
	printf("Enter the name of the file (save to): ");
	gets(filename2);
	fp=fopen(filename, "r");
	
	if ((fp=fopen(filename,"r"))==NULL) //проверка дали първият файл съществува
	{
	   printf("\n\n*** The file does not exist *** \n");
           exit(1); //излиза от програмата
	} 
        fp2=fopen(filename2,"w");

	if ((fp2=fopen(filename2,"w"))==NULL) //проверка дали вторият файл същестува
	{
	   printf("\n\n*** The file does not exist *** \n");
	   exit(1); //излиза от програмата
	} 
   
	do
        {
           printf("Enter the number of the function and press Enter.\n\n");
           printf("\t1. Most common symbol. \n");
           printf("\t2. Most common word.\n");
           printf("\t3. Number of all symbols.\n");
           printf("\t4.Longest and shortest line. \n");
	   option=getche();
	}
	 while ((option!=49) && (option!=50) && (option !=51) && (option !=52)); // проверка за коректно въвеждане на номерата на функциите
	  
	 switch(option) // избор на функция, спрямо въведената стойност
	  { 
	      case (49): 
	      case (50): printf("option 2"); break;
	      case (51): {
		                 FILE *fp; 
				 FILE *fp2;
				 int s;
                                 s=sum(fp,filename);
				 fp2=fopen(filename2,"w");
				 fp2=fputs(s,filename2);
				 break;
			  }
		  case (52): printf("option 4"); break;

	 }
	 return 0;
}

     
        int sum(FILE *fp, char *filename) //определя броя на символите във файла
		 {
                    int s=0;
                    fp=fopen(filename, "r");
                    char ch;
              
			  if(fp==NULL) //проверка
			  {
                             printf("The file cannot be opened! \n");
                             exit(1);
			  } 
              
			  while((ch=fgetc(fp))!=EOF) //четене от файла
                             s++;
 
                   fclose(fp);
                   return(s);
		 }

Работил съм и по последната функция, но поради ограничените ми знания съм 100% сигурен, че има грешка. Проблемът е, че не знам как точно да обходя файла по редове(aко може да ми обясните по-подробно). С прочетеното за fseek разбрах, че с текущите параметри не би трябвало да има отместване спрямо позицията, до която съм стигнал. Но не съм сигурен как точно да използвам fseek(Моля не се смейте, все пак реших да опитам :):P ):

int longshort (FILE *fp, char *filename) 
       {
	   char c,s,y;
           int longest,shortest,count,cn,t;
	   longest=0;
	   shortest=0;
	   count=0;
	   cn=0;
	   fp=fopen(filename,"r");
	      
	
	   if(fp==NULL)
	     {
	       printf("The file cannot be opened! \n");
               exit(1);
	     }

           while((s=fgetc(fp))!='\n')
            count++;
           shortest=count;
    
	   do
	    { 
	       fseek(fp,0L,SEEKCUR);
	       do
	       {
		 cn++;
		 cn=longest;
		 if (shortest > longest)
		 {
	           shortest=t;
	           shortest=longest;
	           longest=t;
		 }
		}
	        while((y=fgetc(fp))!=/n);
			   
	    } 
            while((c=fgetc(fp))!=EOF);
            fclose(fp);
            return(shortest);
            return(longest);
       }

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Публикацията ви съдържа термини, които не допускаме! Моля, редактирайте съдържанието си и премахнете подчертаните думи по-долу. Ако замените букви от думата със звездички или друго, за да заобиколите това предупреждение, профилът ви ще бъде блокиран и наказан!
Напишете отговор в тази тема...

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

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

Дарение

  • Подкрепи съществуването на форума - направи дарение
    26%
    Дарени 256.00 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

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

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