Problema C++

Discutii despre tot ce nu se incadreaza in celelalte categorii.

Moderators: Moderatori ajutatori, Moderatori

Post Reply
User avatar
fan_haulin
Fost moderator
Fost moderator
Posts: 2592
Joined: 08 Jun 2010, 20:35
Detinator Steam: Da
Reputatie: Fost Moderator
Has thanked: 271 times
Been thanked: 106 times
Contact:

25 Nov 2015, 17:46

Salutare. Ma poate ajuta cineva cu un algoritm C++ ? Am nevoie sa citesc de la tastatura un numar N, reprezentand numarul de elemente ce le va avea un vector. Apoi citesc fiecare element al vectorului. Dupa trebuie sa citesc o constanta K , care va reprezenta lungimea MINIMA pe care vreau sa o aiba un subsir de numere INTREGI si in ordine crescatoare. Tot ce am putut face pana acum, voi atasa mai jos. Am sa va dau un exemplu pentru a intelege mai bine ce vreau de la voi:
P.S: Nu vreau handling de erori (gen k>n). Se presupune ca stim ce numere sa introducem.

EX:
n = 6;
k = 3;
citim: v[0] = 1; v[1] = 4; v[2] = 2; v[3] = 4; v[4] = 6; v[5] = 7; // Deja avem un subsir de 3, insa maximul atins este de 4. => Afisam subsirul de 4

Eu folosesc Visual Studio 2015, insa il puteti scrie si in alt compilator C++ incluzand cin si/sau cout. Voi stii sa le 'traduc' ! Multumesc !:)

Code: Select all

int main()
{
	int i, n, k, p = 0, contor = 0, contor_aux = 0, v[100], aux[100];
	printf("Introdu un numar: ");
	scanf_s("%d", &n);
	printf("Introdu lungimea subsirului: ");
	scanf_s("%d", &k);
	for (i = 0; i < n; i++) {
		printf("v[%d] = ", i);
		scanf_s("%d", &v[i]);
	}
	for (i = 0; i < n-1; i++) {
		if (v[i] < v[i + 1]) {
			aux[p] = v[i];
			p++;
		} else if (v[i] == v[i + 1]) {
			aux[p] = v[i];
			p++;
		} else if (v[i]>v[i + 1]) {
			aux[p] = v[i];
			p = p + 2;
		}
	}
	for (i = 0; i < p; i++) {
		if (aux[i] != -858993460) {
			contor++;
		} else {
			contor = 0;
		}
		if (contor_aux < contor) {
			contor_aux = contor;
		}
	}
	contor = 0;
	if (k - 1 <= contor_aux) {
		printf("Numere sunt: ");
		for (i = 0; i < n; i++) {
			if (v[i] < v[i + 1]) {
				contor++;
			} else if (v[i]>v[i + 1]) {
				contor++;
			} else {
				contor = 0;
			}
			if (contor == contor_aux) {
				while (contor >= 0) {
					printf("%d ", aux[i - contor]);
					contor--;
				}
			}
		}
	} else {
		printf("Acest vector nu are un sir de lungime de cel putin %d !", k);
	}
	printf("\n");
    return 0;
}
Post Reply

Return to “Discutii generale”

  • Information