PDA

View Full Version : c++ задача



Tajnomomiche
06-15-2011, 06:08
Някой може ли да ми реши следната задача :
Да се въведе от стандартния вход масив / вектор от цели числа и число а, въведено от клавиатурата. Да се състави и изведе на екрана друг масив / вектор, съдържащ индексите на елементите с четни индекси и стойности по-малки от въведеното число.
Ако може и едно кратко обяснение в рамките на 4 5 реда на задачата :) Мерси предварително :)

thefreak2
06-15-2011, 10:15
#include <iostream.h>

using namespace std;

/*
Не ми се пишеше функция за въвеждаме, за това направо в
програмата се сетват стойностите на масива
*/
int input_array[] = {16, 2, 77, 40, 5, 123, 13, 14, 65, 76, 12, 87, 25, 136};
//Забрави за тези глупости да си именоваш променливите само с една буква
int request_number;

//Съвсем обикновена и проста функция за изкарване на данните, от едномерен масив, на екрана.
void print_array(array,len){
for(int i = 0; i < len; i++){
cout<<"Елемент "<<i<<" - "<<array[i]<<endl;
}
}

int main(){
/*
Програмата започва с въвеждане на цялото число, което ще ни е
критерия за сравнение
*/
cout<<"Въведете число за сравнение: ";
cin>>request_number;


/*
Броим масива за да знаем колко итерации ще има цикъла, който го обхожда,
Избягвай да използваш директно функцията като изчисления за края
( for(int i = 2; i < count(input_array); i+=2){ )
Тъйкато функцията count() ще се изпълнява на всяка итерация, а това
е глупаво да се случва.
*/
int cycle_end = count(input_array);

/*
Масива, който ще съдържа четните елементи, не знаем все още, нито
колко ще е голям, нито дали ще съдържа елементи.
За това заделяме за него, при дефиницията му, максималното място дето би му било нужно.
Което е: бройката на елементите на входния масив разделена на 2
(тъйкато изчисляваме само за четните числа) и резултата закръглен
към по горна стойност с функцията ceil()
*/
int output_array[ceil(cycle_end/2)];

for(int i = 2; i < cycle_end; i+=2){
/*
Обхождаме всеки елемент на входния масив и го сравняваме спрямо числото,
което е въвел потребителя.
Според условието на задачата, ако елемента на масива е по малък, то тогава
записваме в другия масив.
*/
if(input_array[i] < request_number){
output_array[] = input_array[i];
}
}

cout<<"Печатане на масива с резултати:"<<endl;

/*
Остана само да отпечатаме масива, което си правим с горната функцийка.
*/
print_array(output_array,count(output_array));

return 0;
}

Tajnomomiche
06-15-2011, 12:22
благодаря ти златен си :)