Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият.
Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание.
Използваме бисквитки и за измерване на маркетинговите ни усилия.
Да с вектор става по лесно , но в документа пишеше с масиви а пък и няма да е лошо да го знаем и с масиви как става не се знае кога ще ти потрябва .
Жокер - направи си двумерен масив (матрица) с размери x и y, които ще прочетеш от входа и съответно спрямо тях, ще пълниш масива. Нужните елементи ще си ги четеш с for цикли. Момента който трябва да съобразиш в тази задача е да внимаваш при четене на елементите, къде точно в масива се намираш или иначе казано - на кой ред си и от съответния ред кой индекс взимаш.
Ето това четиво ще ти подскаже как да го направиш (виж Multidimensional Arrays)
http://people.scs.carleton.ca/~dehne/projects/cpp-doc/tutorial/tut3-1.html
А как да направя 2D array с user input за размерите ? В линка, който си споделил го правят с предварително зададени стойности с define
Входа от конзолата не може да ти задава директно размера на масива било то двумерен или едномерен или колкото си щеш мерен :) Това го обясняваха в лекциите бая пъти. В случая в задачата ти е дадено, че ще получаваш, цитирам:
The first line of the input contains two integers – N and M.
Each of the following N lines contains M integer numbers – the elements of the input arrays.
И след това се казва (отново цитирам):
Restrictions
0 < N < 100;
0 < M < 100;
Та, какво правим в случая - щом имаме граници които са ни зададени, веднага си създаваме масив с тези граници (в случая 100). Следващата ни стъпка е да си създадем 2 променливи, които ще представляват нашите редици и колони в нашия двумерен масив. Те ще се четат от конзолата. И накрая пълним масива, четейки от конзолата, като въртим for циклите около тези 2 променливи. Изразено в код това изглежда така:
int array[100][100] = {0};
int height = 0;
int width = 0;
std::cin >> height >> width;
for (int i = 0; i < height; ++i) {
for (int g = 0; g < width; ++g) {
std::cin >> array[i][g];
}
}
Ахаа, ясно благодаря ти. Това ми реши проблема с user input size-а, но все още не мога да обходя масива правилно. Доколкото разбирам от твоето предложение за решение на задачата, в матрица например с 3 реда и 4 колони ние трябва да съберем при първата итерация всички първи елементи от всеки ред, тоест се променя само реда, но не и колоната. на втората итерация колоната се мести с +1, тоест отново не я променяме а добавяме съответно +1 и +2 на редовете, за да им достъпим само вторите елементи.
Ето виж какво съм написал, абсолютно не работи, но не знам защо. Благодаря ти за отделеното внимание :)
Защо въртиш циклите си до достигане на 3 и съответно 4? Върти ги около стойностите на променливите, които ти подават от конзолата. В противен случай ти ще завъртиш първия цикъл 3 пъти, но ако от конзолата ти подадат 10 - какво става....пълно мазало :)
Иначе правилно си разбрал - в задачата се иска да събереш всички първи символи от всички редове и да направиш процентно деление, на число отново подадено от конзолата. После същото нещо с вторите символи, третите и т.н. докато не обходиш целия масив.
ясно разбрах, а иначе кода, който пуснах до 3 и 4 беше само тестов. Предварително зададох двурмерния масив с 3 реда и 4 колони и затова въртях циклите до там. Беше преди да ми отговориш за user input-a. Сега ще преместя изчисленията направо в циклите, с които пълня масива. Отново благодаря :)
Интересно ще ми е да видя, как си го направил накрая. Ако се получи, сподели твоя вариант и аз ще споделя моя, за да видим различни подходи към задачата :) Ако пък не се получи....пиши пак и ще помагам с каквото мога. Нали знаеш - учим се докато сме живи и сме живи, за да се учим ;)
Успях да я направя ! Твоят начин подобен ли е ?
Общо взето да :) Ето моето творение:
#include <iostream>
#include <array>
void arrayPopulation(int height, int width, int mod) {
int sumary[100] = {0};
int array[100][100] = {0};
for (int i = 0; i < height; ++i) {
for (int g = 0; g < width; ++g) {
std::cin >> array[i][g];
}
}
std::cin >> mod;
int sum = 0;
int g = 0;
int checkSum = width;
while (checkSum > 0) {
for(int i = 0; i < height; ++i) {
sum += array[i][g];
}
sumary[g] = sum;
checkSum--;
g++;
sum = 0;
}
for (int e = 0; e < width; ++e) {
int result = 0;
result = sumary[e]%mod;
std::cout << result << ' ';
}
}
int main() {
int height = 0;
int width = 0;
int mod = 0;
std::cin >> height >> width;
arrayPopulation(height, width, mod);
return 0;
}
А в твоето решение, аз ли него видях или не ползваш вектор въпреки, че добавяш блиотекта за вектор?
Пробвах различни начини и съм я забравил :D
Не е нужно да пазите числата от масивите. Достатъчно е да имате един масив (вектор) в който да държите съответните суми. Понеже вече сте пуснали работещи решения, ето ви още едно от мен, макар че срока за предаване на домашното все още не е изтекъл.
Доста по-практично, браво
Да, наистина готино решение, но не разбирам защо хората толкова се притесняват да показват какво са напраивли преди да е изтекъл срока на домашното? Ясно е, че някой който не може да се справи ще има възможност да препише, но това си е за него. Колкото и да преписваш ако не си се постарал да го разбереш накрая пак нищо няма да направиш. Пък и все си мисля, че тук хората влизат с цел да научат нещо и да споделят с учещите се каквото знаят, а не в търсене на готови отговори :)