Exemplo n.º 1
0
/**
* Get the sorted order of indices (the indices of the insertion of items,
* sorted according to the values of the items).
*
* The returned vector will contain the indices of the inserted items in an
* order such that the original items will be from large value to smaller value.
*/
std::vector<int> SortHelper::getSortedOrderInVector() const
{
    std::vector<int> orderVector(size(), 0);
    int i;
    std::list<ListItem>::const_iterator itemsIter;

    for (i = 0, itemsIter = _list.begin(); i < size(); i++, itemsIter++)
    {
        orderVector[i] = itemsIter->_originalIndex;
    }

    return orderVector;
}
Exemplo n.º 2
0
main () {
	int i,
		elems = 0; // Quantidade de elementos que ele tem que digitar/percorrer.
	unsigned long vecLong[MAXELEMS]; // Vetor com o fatorial da parte inteira de cada elemento do vetor de double.
	double vecDouble[MAXELEMS]; // Vetor com os elementos digitados pelo usuário.

	do {
		printf("# Quantos números quer digitar? (1 a 60000)\n");
		if (!scanf("%d", &elems)) {
			printf("# Você digitou LIXO\n\n");
		} else if (elems < 1 || elems > MAXELEMS) {
			printf("# ERRO: %d é um valor inválido\n\n", elems);
		}
		cleanBuff();
	} while(elems < 1 || elems > MAXELEMS);

	pushElems(vecDouble, elems);
	orderVector(vecDouble, elems);
	pushFactorial(vecDouble, vecLong, elems);

	printf("# Voce digitou os seguintes elementos:\n");
	for (i = 0; i < elems; i ++) {
		printf("%.3lf\n", vecDouble[i]);
	}

	printf("\n\n");

	for (i = 0; i < elems; i ++) {
		printf("Fatorial de %-2d = ", (int)(vecDouble[i] + 0.5));
		if (vecLong[i] <= 0 || (int)(vecDouble[i] + 0.5) > 20) {
			printf("ERRO\n");
		} else {
			printf("%lu\n", vecLong[i]);
		}
	}

	printf("\n# FIM\n");
}