Anonymní profil Pajda – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Pajda – Programujte.comAnonymní profil Pajda – Programujte.com

 

Příspěvky odeslané z IP adresy 89.102.243.–

Pajda
C / C++ › ošetření vstupů- jen kladná…
19. 6. 2012   #159278

jo to by taky šlo :-) 
Díky!

Pajda
C / C++ › ošetření vstupů- jen kladná…
19. 6. 2012   #159275

ještě bych to potřeboval omezit jen  na celá čísla

Pajda
C / C++ › ošetření vstupů- jen kladná…
18. 6. 2012   #159265

Ahoj,  potřeboval bych poradit jak mám ošetřit vstupy, aby tam nešli zadat záporná čísla a zároveň jen čísla z intervalu 0-xx

typedef struct vozidla_struct
{
	char vyrobce[20];
	char typ[20];
	double pocet;
	double cena;
	vozidla_struct *pNI;
}vozidla;
                                                            
vozidla_struct *pFI=NULL;

//Funkcni prototypy
vozidla *konec (void);
int nove_vozidlo (void);
void hledej_vozidlo (void);
void mazani (void);
void pridani_vozidla (void);
void prodej_vozidla (void);
void vypis_vozidel (void);
int cteni_souboru (char*jmeno);

int _tmain(int argc, _TCHAR* argv[])
{
	char vyber;
	int nacteni;

		nacteni = (cteni_souboru("automobily.dat"));
	if ( nacteni > 0 )
		printf("\nSoubor byl uspesne nacten.\n");

	do
	{
	printf("*******************************************************************************\n");
	printf("\nDobry den, vitejte v seznamu vozidel nasi prodejny.\n");
	printf("\nVypis seznamu dostupnych vozidel - v\nZadani noveho vozidla do seznamu - n\nVymazani vozidla ze seznamu - m");
	printf("\nPrijeti vozidla na prodejnu - p\nProdej vozidla - s\nVyhledani vozidla - z\nKonec - k\n");
	printf("\n*******************************************************************************\n");
	printf("\nZadejte prosim Vas pozadavek:");
	vyber=getchar();
	vyber=toupper(vyber);
	while (getchar()!='\n');

	switch (vyber)
	{
	case 'N':
		nove_vozidlo();
		while (getchar()!='\n');
		system ("CLS");
		break;

	case 'Z':
		hledej_vozidlo();
		while (getchar()!='\n');
		system ("CLS");
		break;

	case 'S':
		prodej_vozidla();
		while (getchar()!='\n');
		system ("CLS");
		break;

	case 'P':
		pridani_vozidla();
		while (getchar()!='\n');
		system ("CLS");
		break;

	case 'M':
		mazani();
		while (getchar()!='\n');
		system ("CLS");
		break;

	case 'V':
		vypis_vozidel();
		while (getchar()!='\n');
		system ("CLS");
		break;
	
	case 'K':
		printf("\nNashledanou\n");
		while (getchar()!='\n');
		system ("CLS");
		break;

	default:
		printf("\nSpatna volba. Opakujte zadani.\n");
		while (getchar()!='\n');
		system ("CLS");
		break;
	}


	}while(vyber!='K');

	FILE*soubor=fopen("automobily.dat","w");
	vozidla *s=pFI;

	if(soubor==0)
	{
		printf("\nSoubor se nevytvoril");
	}

	while(s!=NULL)
	{
		fwrite(s,sizeof(vozidla),1,soubor);
		s=s->pNI;
	}

	fclose(soubor);	
	while (getchar()!='\n');

	return 0;
}

// Funkce

vozidla *konec (void)
{
	vozidla *ptemp;
	if(pFI==NULL)		//prazdna struktura
		return NULL;

	for(ptemp=pFI;ptemp->pNI!=NULL;ptemp=ptemp->pNI);
		return ptemp;
}

int nove_vozidlo (void)
{
	vozidla *pnovy,*ppomocna;

	if ((pnovy=(vozidla *) malloc(sizeof(vozidla)))==NULL)
		return 0;

	pnovy->pNI=NULL;
	printf("\nZadejte vyrobce vozidla: ");
	scanf("%20s",pnovy->vyrobce);
	while(getchar()!='\n');
	
	printf("\nZadejte typ vozidla: ");
	scanf("%20s",pnovy->typ);
	while(getchar()!='\n');

	printf("\nZadejte pocet vozidel: ");
	scanf("%Lf",&pnovy->pocet);
	while(getchar()!='\n');

	printf("\nZadejte cenu vozidla: ");
	scanf("%Lf",&pnovy->cena);
	while(getchar()!='\n');

	if (NULL==(ppomocna=konec()))	
		pFI=pnovy;
	else
		ppomocna->pNI=pnovy;

	return 1;
}

void hledej_vozidlo (void)
{
	char automobil[20], druh[20];
	double kusy,hodnota;
	vozidla *ptemp;


	if(pFI==NULL)
	{
		printf("\nNa prodejne nejsou zadna vozidla.\n");
		return;
	}

	printf("\nZadejte vyrobce automobilu: ");
	scanf("%20s",automobil);
	while(getchar()!='\n');

	printf("\nZadejte typ automobilu: ");
	scanf("%20s",druh);
	while(getchar()!='\n');

	
	ptemp=pFI;
	while(ptemp!=NULL)
	{
		if((strcmp(ptemp->vyrobce,automobil)==0)&&(strcmp(ptemp->typ,druh)==0))
		{
			printf("\nVozidlo bylo nalezeno.\n");
			kusy=ptemp->pocet;
			hodnota=ptemp->cena;
			printf("\nNa prodejne je prave %12.2f vozidel tohoto typu.\nCena jednoho tohoto vozidla je %12.2f Kc.\n",kusy,hodnota);
			ptemp=ptemp->pNI;
			return;
			break;
		}
		else
		{
			ptemp=ptemp->pNI;
		}
	}
	printf("\nVozidlo nebylo nalezeno\n");
	return;
}

void mazani (void)
{
	char automobil[20],druh[20],souhlas;
	double kusy;
	vozidla *ptemp,*ptemp2;

	
	if(pFI==NULL)
	{
		printf("\nNa prodejne nejsou zadna vozidla.\n");
		return;
	}

	printf("\nZadejte vyrobce automobilu: ");
	scanf("%20s",automobil);
	while(getchar()!='\n');

	printf("\nZadejte typ automobilu: ");
	scanf("%20s",druh);
	while(getchar()!='\n');

	ptemp=pFI;
		if((strcmp(ptemp->vyrobce,automobil)==0)&&(strcmp(ptemp->typ,druh)==0))
		{
			printf("\nVozidlo bylo nalezeno.\n");
			printf("\nOpravdu smazat? a/n? :");
			souhlas=getchar();
			while(getchar()!='\n');
			kusy=ptemp->pocet;

			if (souhlas=='a')
			{
				if (ptemp=pFI)
				{
					ptemp=pFI->pNI;
					free(pFI);
					pFI=ptemp;
				}
				printf("\nVozidlo bylo vymazano.");
				printf("\nPred vymazanim bylo v seznamu %12.2f vozidel.\n",kusy);
				while(getchar()!='\n');
				return;
			}
			else
			{
				printf("\nPozadovana akce nebyla provedena.\n");
				while(getchar()!='\n');
				return;
			}
		}
		else
		{
			ptemp=pFI;
				for(ptemp2=pFI,ptemp=pFI->pNI;ptemp!=NULL;ptemp2=ptemp,ptemp=ptemp->pNI)
				{
					if((strcmp(ptemp->vyrobce,automobil)==0)&&(strcmp(ptemp->typ,druh)==0))
					{
						printf("\nVozidlo bylo nalezeno.\n");
						printf("\nOpravdu smazat? a/n? :");
						souhlas=getchar();
						while(getchar()!='\n');
						kusy=ptemp->pocet;

						if (souhlas=='a')
						{
							ptemp2->pNI=ptemp->pNI;
							free(ptemp);
							printf("\nVozidlo bylo vymazano.");
							printf("\nPred vymazanim bylo v seznamu %12.2f vozidel.\n",kusy);
							while(getchar()!='\n');
							return;
							break;
						}
						else
						{
							printf("\nPozadovana akce nebyla provedena.\n");
							while(getchar()!='\n');
							return;
						}
					}
				}
		}
	printf("\nVozidlo v seznamu nebylo nalezeno.\n");
	return;
}

void pridani_vozidla (void)
{
	char automobil[20],druh[20];
	double kusy,novinka;
	vozidla *ptemp;


	if(pFI==NULL)
	{
		printf("\nNa prodejne nejsou zadna vozidla.\n");
		return;
	}

	printf("\nZadejte vyrobce automobilu: ");
	scanf("%20s",automobil);
	while(getchar()!='\n');

	printf("\nZadejte typ automobilu: ");
	scanf("%20s",druh);
	while(getchar()!='\n');
	
	ptemp=pFI;
	while(ptemp!=NULL)
	{
		if((strcmp(ptemp->vyrobce,automobil)==0)&&(strcmp(ptemp->typ,druh)==0))
		{
			printf("\nVozidlo bylo nalezeno.\n");
			printf("\nZadejte pocet novych vozidel: ");
			scanf("%Lf",&novinka);
			kusy=ptemp->pocet+novinka;
			printf("\nNa prodejne je %12.2f vozidel.\n",kusy);
			ptemp->pocet=kusy;
			while(getchar()!='\n');
			return;
			break;
		}
		else
		{
			ptemp=ptemp->pNI;
		}
	}
	printf("\nVozidlo v seznamu nebylo nalezeno.\n");
	return;
}

void prodej_vozidla (void)
{
	char automobil[20],druh[20];
	double kusy,novinka;
	vozidla *ptemp;

	if(pFI==NULL)
	{
		printf("\nNa prodejne nejsou zadna vozidla.\n");
		return;
	}

	printf("\nZadejte vyrobce vozidla: ");
	scanf("%20s",automobil);
	while(getchar()!='\n');

	printf("\nZadejte typ vozidla: ");
	scanf("%20s",druh);
	while(getchar()!='\n');

	ptemp=pFI;
	while(ptemp!=NULL)
	{
		if((strcmp(ptemp->vyrobce,automobil)==0)&&(strcmp(ptemp->typ,druh)==0))
		{
			printf("\nVozidlo bylo nalezeno.\n");
			printf("\nZadejte pocet prodanych vozidel:");
			scanf("%Lf",&novinka);
			kusy=ptemp->pocet-novinka;
			if (kusy<0)
			{
				printf("\nNa prodejne neni dostatek pozadovanych vozidel. Prodej se neustutecnil.\n");
				while(getchar()!='\n');
				return;
				break;
			}
			else
			{
				printf("\nPocet kusu ve skladu: %12.2f\n",kusy);
				ptemp->pocet=kusy;
				while(getchar()!='\n');
				return;
				break;
			}
		}
		else
		{
			ptemp=ptemp->pNI;
		}
	}
	printf("\nVozidlo v seznamu nebylo nalezeno.\n");
	return;
}

void vypis_vozidel (void)
{
	vozidla *ptemp;

	printf("\n		Vyrobce		Znacka		Kusy	Cena");
	
	for(ptemp=pFI;ptemp!=NULL;ptemp=ptemp->pNI)
	{
		printf("\n%20s",ptemp->vyrobce);
		printf("%20s",ptemp->typ);
		printf("%12.2f",ptemp->pocet);
		printf("%12.2f",ptemp->cena);
	}

	printf("\n");
	return;
}
int cteni_souboru (char*jmeno)
{
	FILE *soubor=fopen(jmeno,"r");
	vozidla *s,*konec=NULL;
	unsigned int pocet_struktur, velikost,provedeno=0,i=0;
	unsigned int poloha=ftell(soubor);//zaloha aktualni pozice

	fseek(soubor,0,SEEK_END);//na konec
	velikost=ftell(soubor);//zjisteni velikosti
	fseek(soubor,poloha,SEEK_SET);//presun zpet

	pocet_struktur=velikost/sizeof(vozidla); //zjisteni poctu struktur

	for(i=0;i<pocet_struktur;i++)
	{
		s=(vozidla*)malloc(sizeof(vozidla));//alokace pameti
		if(s!=NULL)
		{
			provedeno=fread(s,sizeof(vozidla),1,soubor);
			if (provedeno>0)
			{
				if(pFI==NULL)
					pFI=s;
				s->pNI=NULL;
				if(konec!=NULL)
					konec->pNI=s;
					konec=s;
			}
			else
				break;
		}
		else
			break;
	}
	fclose(soubor);
	return provedeno;
}
                            
Pajda
C / C++ › Kontrola několika programů
10. 6. 2012   #159020

Ahoj, potřeboval bych zkontrolovat několik programů, případně opravit, nebo doplnit. Mám to do školy a už jsem z toho fakt zoufalý... Peněžní odměna jistá!

kdyby mi někdo mohl poradit, prosím ozvěte se mi na email: mkotry@seznam.cz
byl bych moc vděčný...

Pajda
C / C++ › Nejvyšší bity v poli
10. 6. 2012   #159019

no sám tomu zadání právě moc nerozumím... 

přesné zadání bylo: 

Napište funkci, která má parameter 32-prvkové pole typu unsigned char a návratovou hodnotu typu unsigned int. Funkce uloží nejvyšší (7.) bit prvků pole do jednotlivých bitů výsledku funkce. Napište příklad volání funkce, nezapomeňte na deklaraci použitých proměnných.

Pajda
C / C++ › Vázaný seznam
6. 6. 2012   #158904

díky :)

Pajda
C / C++ › Vázaný seznam
5. 6. 2012   #158880

málem jsem zapomněl.... díky ;) 

Pajda
C / C++ › Vázaný seznam
5. 6. 2012   #158879

ještě takový dotaz a co by mi měl hodit tento program .... nechce se mi to vypisovat

int i;
i=“Z“- “A“+1;

Pajda
C / C++ › Vázaný seznam
5. 6. 2012   #158875

Zdravím, potřeboval bych poradit s jednou otázkou co jsme měli v testu... když to zkouším ve wxDEV tak se mi to nezkompiluje... (asi to píšu stejně špatně)


typedef struct dataItem_struct
{
double  value;
dataItem_struct *pNextItem;
} dataItem;

dataItem *first, *pom;

Co udělá příkaz
for(pom=first;pom->pNextItem!=NULL; pom=pom->NextItem);

A jaká chyba v programu nastane v předchozím programu v případě, že vázaný seznam bude prázdný
(v proměnné first je NULL)???

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý