예제 #1
0
파일: dextractor.c 프로젝트: fvrmatteo/CV
int uleb128ToUint(FILE *fp, int *from) {
	setOffset(fp, *from);
	int *bits, *temp = (int *)malloc(sizeof(int) * 8);
	int count = 1, i, j, a, y, z = 0, somma = 0;
	//aumenta il count finchè trova byte con il bit più significativo settato a 1
	while((bits = byteToBits(fgetc(fp)))[7] == 1) {
		count++;
	}
	int **converted = (int **)malloc(sizeof(int *) * count);
	fseek(fp, *from, 0);
	//aggiorno il puntatore al prossimo byte per una lettura futura
	*from += count;
	//inizializzo l'array "converted"
	for(i = 0; i < count; i++) {
		converted[i] = (int *)malloc(sizeof(int) * 7);
	}
	//inserisce nell'array "converted" tutti i byte che compongono il numero
	for(i = 0; i < count; i++) {
		temp = byteToBits(fgetc(fp));
		for(j = 0; j < 7; j++) {
			converted[i][j] = temp[j];
		}
	}
	//rovescia l'array (little-endian)
	for(i = 0; i < count; i++) {
		y = 6;
		for(j = 0; j < 4; j++) {
			a = converted[i][j];
			converted[i][j] = converted[i][y];
			converted[i][y--] = a;
		}
	}
	//calcola il numero
	for(i = 0; i < count; i++) {
		for(j = 6; j >= 0; j--) {
			if(converted[i][j] == 1) {
				somma += potenza(2, z);
			}
			z++;
		}
	}
	return somma;
}
예제 #2
0
파일: main.cpp 프로젝트: CCJY/coliru
int main()					
{
	double n, ris=0;
	char op;
	cout<<"ELENCO OPERAZIONI DISPONIBILI:\n"<<endl;
	cout<<"somma (+)"<<endl;			
	cout<<"sottrazione (-)"<<endl;
	cout<<"prodotto (*)"<<endl;
	cout<<"divisione (/)"<<endl;
	cout<<"inverso di un numero (!)"<<endl;
	cout<<"potenza (^)"<<endl;
	cout<<"radice quadrata (R)"<<endl;	
	cout<<"visualizzazione risultato (=)"<<endl;

	cout<<"\n\nPrimo numero: ";						
	cin>>ris;
	while (op!='='){
		cout<<"Operatore: ";
		cin>>op;
		switch (op)									
		{
		case '+': 
			cout<<"Secondo numero: ";
			cin>>n;	  
			ris=somma(ris,n);				
			break;
		case '-':
			cout<<"Secondo numero: ";
			cin>>n;   
			ris=sott(ris,n);			
		    	break;
		case '*': 
			cout<<"Secondo numero: ";
			cin>>n;
			ris=prodotto(ris,n); 
			break;					
		case '/': 
			cout<<"Secondo numero: ";
			cin>>n;
			ris=divisione(ris,n); 
			break;
		case '!': 
			ris=inverso(ris); 
			break;
		case '^': 
			cout<<"Secondo numero: ";
			cin>>n;
			while(ris==0 && n<0){
				cout<<"Errore! Reinserire il secondo numero (maggiore di 0)(In base alla scelta dei matematici): ";
				cin>>n;
			}
			ris=potenza(ris,n); 
			break;
		case 'R': 
			ris=radice(ris); 
			break;						
		case '=': 
			cout<<ris<<endl; 
			break;
	
		default: cout<<"operazione non possibile"<<endl; 
		}
	}
	getchar();
	return 0;
}