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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Програмата ми дава грешки...

Featured Replies

Условието е: В таблица се съдържат данни за група лица,за всяко от тях ЕГН и име.Да се състави програма която избира следните операции от меню:

1.Създава нов празен фаил;

2.Добавя към файла компоненти с данни за лица;

3.Изтрива компоненти от файла;

4.Заменя компоненти от файла с нови;

5.Извежда списък на лицата,родени през посочена година;

6.Извежда данните на всички лица,включени във файла;

Ето това сътворих на Microsoft Visual C++ 6.0...

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

typedef struct{ 

	char ime[31]; char EGN[11];

} LICE;

FILE fl;

char imefl[30];

LICE lice;

//za vyvejdane na dannite na edno lice

void readLice(LICE *lc) {

	printf("%20sVavedete imeto: ","");

	gets(lc->ime);

	printf("%20sVavedete egn: ","");

	gets(lc->EGN);

}

//za izvejdane na dannite na edno lice

void writeLice(LICE lc) {

	printf("Ime: %-21s egn: %s\n",lc.ime,lc.EGN);

}

int exist(char *ime) {

	FILE *f = fopen(ime,"r"); fclose(f);

	return f!=NULL;

}

//sazdavane na prazen fail

void szdPrz(){

	char ch;

	if (exist(imefl)){

		printf("failat sashtestvuva! ");

		printf("da go prezapisha li? ");

		ch=getchar();

		if (ch=='n') return;

	}

	fl=fopen(imefl,"w");

	fclose(fl);

	printf("\n failat e sazdaden.\n");

}

//za dobavqne na komponenti kym faila

void dobaviane(){

	char ch;

	if (!exist(imefl)) {

		printf("failat ne e sazdaden!\n");return;

	}

	fl=fopen(imefl,"a+b");

	do{

		readLice(&lice);

		fwrite(&lice,sizeof(lice),1,fl);

		printf("Shte prodaljite li vavejdaneto? ");

		ch=getchar(); getchar();

	}while (ch!='n');

	fclose(fl);

}

void iztrivane() {

	FILE *delFl; //pomoshten fail za iztrivaneto

	char EGN[11];

	if (!exist(imefl)) {

		printf("faila ne e sazdaden!\n");return;

	}

	printf("vavedete egn: ");gets(EGN);


	fl=fopen(imefl,"rb"); delFl=fopen("Del","wb");

		fread (imefl,sizeof(lice),1,fl);

	while (!feof(fl)){

		if (strcmp(lice.EGN,EGN)!=0)

			fwrite(&lice,sizeof(lice),1,delFl);

		else printf("danni egn %s iztriti.\n",EGN);

		fread(&lice,sizeof(lice),1,fl);

	}

	fclose(fl); fclose(delFl);

	remove(imefl); rename("DEL",imefl);

}

void zamiana() {

	char EGN[11];//egn za zameniane

	if (!exist(imefl))

	{ printf("failat ne e sazdaden!\n"); return; }

	printf("vavedete egn: "); gets(EGN);

	fl=fopen(imefl,"r+b");

	fread(&lice,sizeof(lice),1,fl);

	while (!feof(fl)) {

		if (strcmp(lice.EGN,EGN)==0) {

			readLice(&lice);

			fseek(gl,-(long)sizeof(lice),1,fl);

			fwrite(&lice,sizeof(lice),1,fl);

			printf("danni za egn %s zameneni.\n",EGN);

			break;

		}

		fread(&lice,sizeof(lice),1,fl);

	}

	fclose(fl); printf("\n");

}

void spisGod() {

	int k,godTrs,godLice;

	char gg[3];

	if (!exist(imefl))

	{ printf("failat ne e sazdaden!\n"); return;

	printf("zadaite godina na rajdane: ");

	scanf("%d",&godTrs); getchar() {

		fl=fopen(imefl,"r+b"); k=0;

		fread(&lice,sizeof(lice),1,fl);

		while (!feof(fl)) {

			strncpy(gg,lice.EGN,2); godLice=atoi(gg);

			if (lice.EGN[2]>'3') godLice+=2000;

			else godLice+=1900;

			if (godLice==godTrs) { k++;writeLice(lice);}

			fread(&lice,sizeof(lice),1,fl);

		}

		if (k==0)

			printf("nqma lica,rodeni prez %d godina.\n",godTrs);

		fclose(fl);

	}

	void obSpis() {

		int k;

		if (!exist(fl)) {

			printf("failat ne e sazdaden!\n");

			return;

		}

		fl=fopen(imefl,"rb"); k=0;

		fread(&lice,sizeof(lice),1,fl);

		while (!feof(fl)) {

			k++;writeLice(lice);

			fread(&lice,sizeof(lice),1,fl);

		}

		if (k==0) printf("failat e prazen\n");

		fclose(fl);

	}

	//glavnata funkciq nai-setne :) 

	void main() {

		int c;

		printf("ime na fail: "); gets(imefl);

		do {

			printf("%20sMENIU NA IZPALNIAVANITE OPERACII:\n","");

			printf("%26s1. sazdavane na nov prazen fail\n","");

			printf("%26s2. dobaviane na komponenti\n","");

			printf("%26s3. iztrivane na komponenti\n","");

			printf("%26s4. zamiana na komponent\n","");

			printf("%26s5. rodeni prez dadena godina\n","");

			printf("%26s6. spisak na vsichki\n","");

			printf("%20sPosochete operacia ili 0 za krai: ","");

			scanf(%d",&c); getchar();

				switch ©{

				case 1:szdPrz(); break;

				case 2:dobaviane(); break;

				case 3:iztrivane(); break;

				case 4:zamiana(); break;

				case 5:spisGod(); break;

				case 6:obSpis();

			}

		}while (c!=0);

	}

Аз ще продължавам да се мъча,но ако някой все пак реши да погледне и намери грешките ще съм благодарен.

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

  • Автор
Та какви грешки казваш дава ?

binary '=' : no operator defined which takes a right-hand operand of type 'struct _iobuf *' (or there is no acceptable conversion) и такава грешка ми дава...

left of '->_flag' must point to class/struct/union ...и такава

cannot convert parameter 4 from 'struct _iobuf' to 'struct _iobuf * и не знам какво стана полудявам вече :speak:

binary '=' : no operator defined which takes a right-hand operand of type 'struct _iobuf *' (or there is no acceptable conversion) и такава грешка ми дава...

left of '->_flag' must point to class/struct/union ...и такава

cannot convert parameter 4 from 'struct _iobuf' to 'struct _iobuf * и не знам какво стана полудявам вече :speak:

Не пише ли в кой файл и на кой ред е това ?

  • Автор

c:\kursova1var.cpp(34) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'struct _iobuf *' (or there is no acceptable conversion)

c:\kursova rabota1\kursova1var.cpp(35) : error C2664: 'fclose' : cannot convert parameter 1 from 'struct _iobuf' to 'struct _iobuf *'

No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

c:\kursova1var.cpp(44) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'struct _iobuf *' (or there is no acceptable conversion)

c:\kursova1var.cpp(47) : error C2664: 'fwrite' : cannot convert parameter 4 from 'struct _iobuf' to 'struct _iobuf *'

No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

c:\kursova1var.cpp(51) : error C2664: 'fclose' : cannot convert parameter 1 from 'struct _iobuf' to 'struct _iobuf *'

No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

c:\kursova1var.cpp(61) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'struct _iobuf *' (or there is no acceptable conversion)

c:\kursova1var.cpp(62) : error C2664: 'fread' : cannot convert parameter 4 from 'struct _iobuf' to 'struct _iobuf *'

No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

c:\kursova1var.cpp(63) : error C2819: type '_iobuf' does not have an overloaded member 'operator ->'

d:\vc98\include\stdio.h(146) : see declaration of '_iobuf'

c:\kursova1var.cpp(63) : error C2227: left of '->_flag' must point to class/struct/union

c:\kursova1var.cpp(63) : fatal error C1903: unable to recover from previous error(s); stopping compilation

Error executing cl.exe.

kursova1var.exe - 10 error(s), 0 warning(s)

Не разбирам и аз какво му стана на тва чудо...

Човек... оправя някоя грешка и се появи нова... Засега имаш най-малко 18.

На първо време fl трябва да е fl* FILE, не fl FILE.

Тоест трябва да е указател към FILE.

Едит: какво трябва да прави spisGod()?

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

  • Автор
Човек... оправя някоя грешка и се появи нова... Засега имаш най-малко 18.

На първо време fl трябва да е fl* FILE, не fl FILE.

Тоест трябва да е указател към FILE.

да вярно fl* FILE e , все пак съм ти благодарен че взе отношение по въпроса,ще се мъча то е ясно че тая вечер съм яко на кафета и цигари пред компа :whist::) :)

функцията spisGod ми е да извежда лицата родени през годината която въведа

printf("zadaite godina na rajdane: "); ....

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

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

typedef struct{

	char ime[31]; char EGN[11];

} LICE;

FILE* fl;

char imefl[30];

LICE lice;

//za vyvejdane na dannite na edno lice

void readLice(LICE *lc) {

	printf("%20sVavedete imeto: ","");

	gets(lc->ime);

	printf("%20sVavedete egn: ","");

	gets(lc->EGN);

}

//za izvejdane na dannite na edno lice

void writeLice(LICE lc) {

	printf("Ime: %-21s egn: %s\n",lc.ime,lc.EGN);

}

int exist(char *ime) {

	FILE *f = fopen(ime,"r"); fclose(f);

	return f!=NULL;

}

//sazdavane na prazen fail

void szdPrz(){

	char ch;

	if (exist(imefl)){

		printf("failat sashtestvuva! ");

		printf("da go prezapisha li? ");

		ch=getchar();

		if (ch=='n') return;

	}

	fl=fopen(imefl,"w");

	fclose(fl);

	printf("\n failat e sazdaden.\n");

}

//za dobavqne na komponenti kym faila

void dobaviane(){

	char ch;

	if (!exist(imefl)) {

		printf("failat ne e sazdaden!\n");return;

	}

	fl=fopen(imefl,"a+b");

	do{

		readLice(&lice);

		fwrite(&lice,sizeof(lice),1,fl);

		printf("Shte prodaljite li vavejdaneto? ");

		ch=getchar(); getchar();

	}while (ch!='n');

	fclose(fl);

}

void iztrivane() {

	FILE *delFl; //pomoshten fail za iztrivaneto

	char EGN[11];

	if (!exist(imefl)) {

		printf("faila ne e sazdaden!\n");return;

	}

	printf("vavedete egn: ");gets(EGN);


	fl=fopen(imefl,"rb"); delFl=fopen("Del","wb");

		fread (imefl,sizeof(lice),1,fl);

	while (!feof(fl)){

		if (strcmp(lice.EGN,EGN)!=0)

			fwrite(&lice,sizeof(lice),1,delFl);

		else printf("danni egn %s iztriti.\n",EGN);

		fread(&lice,sizeof(lice),1,fl);

	}

	fclose(fl); fclose(delFl);

	remove(imefl); rename("DEL",imefl);

}

void zamiana() {

	char EGN[11];//egn za zameniane

	if (!exist(imefl))

	{ printf("failat ne e sazdaden!\n"); return; }

	printf("vavedete egn: "); gets(EGN);

	fl=fopen(imefl,"r+b");

	fread(&lice,sizeof(lice),1,fl);

	while (!feof(fl)) {

		if (strcmp(lice.EGN,EGN)==0) {

			readLice(&lice);

			fseek(fl,-(long)sizeof(lice),1);

			fwrite(&lice,sizeof(lice),1,fl);

			printf("danni za egn %s zameneni.\n",EGN);

			break;

		}

		fread(&lice,sizeof(lice),1,fl);

	}

	fclose(fl); printf("\n");

}

void spisGod() 

{

	int k,godTrs,godLice;

	char gg[3];

	if (!exist(imefl))

	{ printf("failat ne e sazdaden!\n"); return;}

	printf("zadaite godina na rajdane: ");

	scanf("%d",&godTrs); getchar();

		fl=fopen(imefl,"r+b"); k=0;

		fread(&lice,sizeof(lice),1,fl);

		while (!feof(fl)) {

			strncpy(gg,lice.EGN,2); godLice=atoi(gg);

			if (lice.EGN[2]>'3') godLice+=2000;

			else godLice+=1900;

			if (godLice==godTrs) { k++;writeLice(lice);}

			fread(&lice,sizeof(lice),1,fl);

		}

		if (k==0)

			printf("nqma lica,rodeni prez %d godina.\n",godTrs);

		fclose(fl);

	}

	void obSpis() 

	{

		int k;

		if (!exist(imefl)) {

			printf("failat ne e sazdaden!\n");

			return;

		}

		fl=fopen(imefl,"rb"); k=0;

		fread(&lice,sizeof(lice),1,fl);

		while (!feof(fl)) {

			k++;writeLice(lice);

			fread(&lice,sizeof(lice),1,fl);

		}

		if (k==0) printf("failat e prazen\n");

		fclose(fl);

	}

	//glavnata funkciq nai-setne :)

	void main() 

	{

		int c;

		printf("ime na fail: "); gets(imefl);

		do 

		{

			printf("%20sMENIU NA IZPALNIAVANITE OPERACII:\n","");

			printf("%26s1. sazdavane na nov prazen fail\n","");

			printf("%26s2. dobaviane na komponenti\n","");

			printf("%26s3. iztrivane na komponenti\n","");

			printf("%26s4. zamiana na komponent\n","");

			printf("%26s5. rodeni prez dadena godina\n","");

			printf("%26s6. spisak na vsichki\n","");

			printf("%20sPosochete operacia ili 0 za krai: ","");

			scanf("%d", &c);

		  switch (c)

			{

				case 1:

					szdPrz(); 

					break;

				case 2:

					dobaviane(); 

					break;

				case 3:

					iztrivane(); 

					break;

				case 4:

					zamiana(); 

					break;

				case 5:

					spisGod(); 

					break;

				case 6:

					obSpis();

			}

		}

		while (c!=0);

	}

Оправих синтактичните грешки... Вече поне може да се компилира.

Не знам обаче работи ли biggrin.gif

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

  • Автор

компилира се,само дето ми забива като избера операция но и тва е напредък :) много ме напуши на смях като видях switch © :whist: то тва да е проблема.

Спокойно колега мойта има само една грешка - НЕ работи :whist:

  • Автор

хаха :) спокоен съм засега ;) В университета много ни мъчат с тия структури binary файлове и т.н. 3-ти курс ще учим и асемблер .. нямам думи за тогава пък кво ше е.Уж на по-ниско ниво е ама едва ли да е лесно

хаха :) спокоен съм засега :P В университета много ни мъчат с тия структури binary файлове и т.н. 3-ти курс ще учим и асемблер .. нямам думи за тогава пък кво ше е.Уж на по-ниско ниво е ама едва ли да е лесно

;)))

HELLO	CSECT			   The name of this program is 'HELLO'

*							Register 15 points here on entry from Op/sys or caller.

		 USING *,12		  Tell assembler what register we are using for pgm. base

		 STM   14,12,12(13)  Save registers 14,15,and 0 thru 12 in callers Save area

		 LR	12,15		 Set up base register with programs entry point address	   

		 LA	15,SAVE	   Now Point at our own save area

		 ST	15,8(13)	  Set forward chain

		 ST	13,4(15)	  Set back chain			   

		 LR	13,15		 Now switch to new save area

*							-end of housekeeping (similar for most programs) -

		 WTO   'Hello World' Write To Operator  (Operating System macro)

*

		 L	 13,4(13)	  point at caller's-provided save area					 

		 LM	14,12,12(13)  Restore registers as on entry

		 BR	14			Return to caller

*		   

SAVE	 DS	18A		   Define 18 fullwords for calling

		 END  HELLO		  This is the end of the program

Само за да те успокоя - асемблер е доста по-трудно.

Която ли и операция да избереш забива?

  • Автор
Само за да те успокоя - асемблер е доста по-трудно.

Която ли и операция да избереш забива?

благодаря за успокоението laugh.gif

та избирам име на файл и след като ме пита за операция която и да избера....

и така и не разбрах т.е. нямам нужните познания де какво го кара да забива така,не забива единствено при "0" демек "край"

Според вас ако пробвам на dev C++ дали ще е е същото ?

post-199364-1238098982_thumb.jpg

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

  • Автор
Мисля че ще е същото...

Що не го дебъгнеш?

Unhandled exception in kRabota.exe: 0XC0000005: Access Violation

пфф отчайвам се вече

Човек изчакай след малко ще го видя... Чуди ме тая грешка...

  • Автор
Човек изчакай след малко ще го видя... Чуди ме тая грешка...

Имам две седмици за чакане,благодаря още веднъж :huh:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

typedef struct{

	char ime[31]; char EGN[11];

} LICE;

FILE* fl;

char imefl[30];

LICE lice;

//za vyvejdane na dannite na edno lice

void readLice(LICE *lc) {

	printf("%20sVavedete imeto: ","");

	gets(lc->ime);

	printf("%20sVavedete egn: ","");

	gets(lc->EGN);

}

//za izvejdane na dannite na edno lice

void writeLice(LICE lc) {

	printf("Ime: %-21s egn: %s\n",lc.ime,lc.EGN);

}

int exist(char *ime) {


	FILE *f = fopen(ime,"r");

	return f!=NULL;

}

//sazdavane na prazen fail

void szdPrz(){

	char ch;

	if (exist(imefl)){

		printf("failat sashtestvuva! ");

		printf("da go prezapisha li? ");

		ch=getchar();

		if (ch=='n') return;

	}

	fl=fopen(imefl,"w");

	fclose(fl);

	printf("\n failat e sazdaden.\n");

}

//za dobavqne na komponenti kym faila

void dobaviane()

{

	char ch;

	if (!exist(imefl)) {

		printf("failat ne e sazdaden!\n");return;

	}

	fl=fopen(imefl,"a+b");

	do{

		readLice(&lice);

		fwrite(&lice,sizeof(lice),1,fl);

		printf("Shte prodaljite li vavejdaneto? ");

		ch=getchar(); getchar();

	}while (ch!='n');

	fclose(fl);

}

void iztrivane() {

	FILE *delFl; //pomoshten fail za iztrivaneto

	char EGN[11];

	if (!exist(imefl)) {

		printf("faila ne e sazdaden!\n");return;

	}

	printf("vavedete egn: ");gets(EGN);


	fl=fopen(imefl,"rb"); delFl=fopen("Del","wb");

		fread (imefl,sizeof(lice),1,fl);

	while (!feof(fl)){

		if (strcmp(lice.EGN,EGN)!=0)

			fwrite(&lice,sizeof(lice),1,delFl);

		else printf("danni egn %s iztriti.\n",EGN);

		fread(&lice,sizeof(lice),1,fl);

	}

	fclose(fl); fclose(delFl);

	remove(imefl); rename("DEL",imefl);

}

void zamiana() {

	char EGN[11];//egn za zameniane

	if (!exist(imefl))

	{ printf("failat ne e sazdaden!\n"); return; }

	printf("vavedete egn: "); gets(EGN);

	fl=fopen(imefl,"r+b");

	fread(&lice,sizeof(lice),1,fl);

	while (!feof(fl)) {

		if (strcmp(lice.EGN,EGN)==0) {

			readLice(&lice);

			fseek(fl,-(long)sizeof(lice),1);

			fwrite(&lice,sizeof(lice),1,fl);

			printf("danni za egn %s zameneni.\n",EGN);

			break;

		}

		fread(&lice,sizeof(lice),1,fl);

	}

	fclose(fl); printf("\n");

}

void spisGod() 

{

	int k,godTrs,godLice;

	char gg[3];

	if (!exist(imefl))

	{ printf("failat ne e sazdaden!\n"); return;}

	printf("zadaite godina na rajdane: ");

	scanf("%d",&godTrs); getchar();

		fl=fopen(imefl,"r+b"); k=0;

		fread(&lice,sizeof(lice),1,fl);

		while (!feof(fl)) {

			strncpy(gg,lice.EGN,2); godLice=atoi(gg);

			if (lice.EGN[2]>'3') godLice+=2000;

			else godLice+=1900;

			if (godLice==godTrs) { k++;writeLice(lice);}

			fread(&lice,sizeof(lice),1,fl);

		}

		if (k==0)

			printf("nqma lica,rodeni prez %d godina.\n",godTrs);

		fclose(fl);

	}

	void obSpis() 

	{

		int k;

		if (!exist(imefl)) {

			printf("failat ne e sazdaden!\n");

			return;

		}

		fl=fopen(imefl,"rb"); k=0;

		fread(&lice,sizeof(lice),1,fl);

		while (!feof(fl)) {

			k++;writeLice(lice);

			fread(&lice,sizeof(lice),1,fl);

		}

		if (k==0) printf("failat e prazen\n");

		fclose(fl);

	}

	//glavnata funkciq nai-setne :)

	void main() 

	{

		int c;

		printf("ime na fail: "); gets(imefl);

		do 

		{

			printf("%20sMENIU NA IZPALNIAVANITE OPERACII:\n","");

			printf("%26s1. sazdavane na nov prazen fail\n","");

			printf("%26s2. dobaviane na komponenti\n","");

			printf("%26s3. iztrivane na komponenti\n","");

			printf("%26s4. zamiana na komponent\n","");

			printf("%26s5. rodeni prez dadena godina\n","");

			printf("%26s6. spisak na vsichki\n","");

			printf("%20sPosochete operacia ili 0 za krai: ","");

			scanf("%d", &c);

		  switch (c)

			{

				case 1:

					szdPrz(); 

					break;

				case 2:

					dobaviane(); 

					break;

				case 3:

					iztrivane(); 

					break;

				case 4:

					zamiana(); 

					break;

				case 5:

					spisGod(); 

					break;

				case 6:

					obSpis();

			}

		}

		while (c!=0);

}

Така, този проблем е опревн, грешката ти беше в int exist(char*) функцията - опитваше се да затвориш файл за който не е сигурно, че е отворен/не е равен на null/...

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

  • Автор

Уникален си батка :beer::);):clap: :clap: :clap:

Много много много благодаря!

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

Регистрирайте се или влезете в профила си за да коментирате

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

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

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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