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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Помощ файлове в C :(

Featured Replies

Да се напише програма на С, която въвежда имената и годините на група хора.Да се използва символен низ.След годините се въвежда запетая (с изключение на последния човек), както е показано в следния пример:

Георги 25, Ана 17, Иван 20, Петър 18

Програмата да е организирана с меню и да реализира (чрез функции):

-Четене на данните от файл;

-Записване на данните във файл;

-Изчисляване на средната възраст на хората;

-Извеждане на таблица с въведената информация и средната възраст на хората.

Георги 25

Ана 17

Иван 20

Петър 18

____________________

Средна възраст 20.0

Кодът:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 30
struct people
{
char name[50];
int year;
};
void menu()
{
printf("\n1.Add people and their years \n");
printf("2.List of all people \n");
printf("3.Middle-aged people \n");
printf("4.Table with information for people \n");
printf("5.Exit \n");
}
float sredna_vyzrast(struct people group[], int current_num_people)
{
int i;
int sum=0;
float sr_sum;
for(i=0;i<current_num_people;i++)sum=sum +group[i].year;



sr_sum=(sum/current_num_people);
return sr_sum;
}
void print_person(struct people group)
{
printf("%s",group.name);
}
void print_years(struct people group)
{
printf("%d",group.year);

}




int main(void)
{
int num_people,current_num_people=0;
struct people group[MAX],temp[MAX];
int i,j,choice;
int sum=0;
float sr_sum;
char search;
do
{
printf("count people: ");
scanf("%d",&num_people);
}
while (num_people>MAX);
printf("\n\n");
do
{
menu();
scanf("%d",&choice);
switch(choice)
{
case 1:
for(i=0;i<num_people;i++)
{
printf("Person: ");
printf("\nName: ");
scanf("%s",&group[i].name);
printf("Year: ");
scanf("%d",&group[i].year);
printf("\n");
current_num_people++;
}
break;
case 2:
printf("People: \n");
for(i=0;i<current_num_people;i++)
{
if(i!=0)
printf(",");
printf("%s\t",group[i].name);
printf("%d",group[i].year);


}
break;
case 3:
printf("srednata vyzrast e: %.1f",sredna_vyzrast(group,current_num_p eople));
printf("\n");
break;
case 4:
for(i=0;i<current_num_people;i++)
{
printf("\n");
print_person(group[i]);
printf("\t\t");
print_years(group[i]);
}
{
printf("\n");
printf("___________________");
printf("\n");
printf("Sr.vyzrast \t");
printf("%.1f",sredna_vyzrast(group,curre nt_num_people));

}
break;
case 5:
exit(0);
break;
}
}
while(1);
return 0;
}
[/codebox]

Това е условието на задачата ми и кодът който съм направил и всичко си е ок но незнам как да направя това с файловете , просто не ги разбирам и тва си е :S Ако някой може да ми хелп ще съм му много благодарен

Редактирано от CuST0M1z3 (преглед на промените)

Кажи какво по-конкретно те затруднява, че и ти да имаш полза от цялата работа.

Между другото ползвай тагa [CОDE], че кода е изключително труден за четене!

  • Автор
Кажи какво по-конкретно те затруднява, че и ти да имаш полза от цялата работа.

Между другото ползвай тагa [CОDE], че кода е изключително труден за четене!

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

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

{

   FILE *fp;

   char ch;


   if((fp = fopen(argv[ 1 ],"r"))==NULL) {

	 printf("Cannot open file.\n");

	 exit(1);

   }


   while((ch = fgetc( fp )) != EOF) {

	 printf("%c", ch);

   }

   fclose(fp);


   return 0;

 }

  • Автор
{

   FILE *fp;

   char ch;


   if((fp = fopen(argv[ 1 ],"r"))==NULL) {

	 printf("Cannot open file.\n");

	 exit(1);

   }


   while((ch = fgetc( fp )) != EOF) {

	 printf("%c", ch);

   }

   fclose(fp);


   return 0;

 }

аз не мога да си направя конкретния код за моята програма ....

Редактирано от CuST0M1z3 (преглед на промените)

  • Автор

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define MAX 30
int size;
struct people
{

char name[50];
int year;


};
void menu()
{
printf("\n1.Write \n");
printf("2.Read \n");
printf("3.Add people and their years \n");
printf("4.List of all people \n");
printf("5.Middle-aged people \n");
printf("6.Table with information for people \n");
printf("7.Exit \n");
}

float sredna_vyzrast(struct people group[], int current_num_people)
{
int i;
int sum=0;
float sr_sum;
for(i=0;i<current_num_people;i++)sum=sum+group[i].year;



sr_sum=(sum/current_num_people);
return sr_sum;
}
void print_person(struct people group)
{
printf("%s",group.name);
}
void print_years(struct people group)
{
printf("%d",group.year);

}



int num_people,current_num_people=0;
struct people group[MAX],temp[MAX];
int i,j;
int sum=0;
float sr_sum;
char search;
void add()
{


do
{

printf("count people: ");
scanf("%d",&num_people);
}
while (num_people>MAX);
printf("\n\n");




for(i=0;i<num_people;i++)
{
printf("Person: ");
printf("\nName: ");
scanf("%s",&group[i].name);
printf("Year: ");
scanf("%d",&group[i].year);
printf("\n");
current_num_people++;
}
}


void print(){
printf("People: \n");
for(i=0;i<current_num_people;i++)
{
if(i!=0)
printf(",");
printf("%s\t",group[i].name);
printf("%d",group[i].year);


}
}
void load(){
int i;
char namez[ 100 ];
FILE *in;

size = 0;

printf("File name: ");
scanf("%s", namez);

in = fopen(namez, "rt");
fscanf(in, "%d", &size);
for(i=0; i<size; i++){
fscanf(in, "%s %d \n", &group[i].name, &group[i].year);
}
fclose( in );
}

void save(){
int i;
char namez[ 100 ];
FILE *out;

printf("File name: ");
scanf("%s", namez);

out = fopen(namez, "wt");
fprintf(out, "%d\n", size);
for(i=0; i<size; i++){
fprintf(out, "%s %d \n", group[i].name,group[i].year);
}
fclose( out );
}
void vyzrast(){
printf("srednata vyzrast e: %.1f",sredna_vyzrast(group,current_num_people));
printf("\n");
}
void tablica(){
for(i=0;i<current_num_people;i++)
{
printf("\n");
print_person(group[i]);
printf("\t\t");
print_years(group[i]);
}
{
printf("\n");
printf("___________________");
printf("\n");
printf("Sr.vyzrast \t");
printf("%.1f",sredna_vyzrast(group,current_num_people));

}
}
void exitt(){
exit(0);



}
int main(void)
{
int choice = 0;


while(1)

{

menu();
scanf("%d",&choice);
switch(choice)
{
case 1:save();
break;
case 2:load();
break;
case 3:add();
break;
case 4:print();
break;
case 5:vyzrast();
break;
case 6:tablica();
break;
case 7:exitt();
break;
}
}
return 0;
}










[/codebox]

това успях да сглобя но нещо липсва :S

Кажи какво липсва, де! Не ще да записва? Някъде се дъни?

* А, да, съвета ми да използваш [CОDE] тагът беше глупав, защото визуализацията на голям код е под всякаква критика, лично за мен е невъзможно да чета кода така. Измислете нещо, адиминистрацията!

  • Автор
Кажи какво липсва, де! Не ще да записва? Някъде се дъни?

* А, да, съвета ми да използваш [CОDE] тагът беше глупав, защото визуализацията на голям код е под всякаква критика, лично за мен е невъзможно да чета кода така. Измислете нещо, адиминистрацията!

записва във файла само 0 :S

записва във файла само 0 :S

Никъде не видях глобални променили или да ги предаваш като входящи на save() т.е. структурата group във функцията save е празна

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

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

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

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

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

Дарение

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

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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