Крч только начал учить си++, 1курс все дела, задают задачи, я вроде бы учу, понимаю что да как, но логически правильно составить решение к задаче не могу. Не получается расписать код и все такое. Задали "задан одномерный массив из n, n меньше или равен 10000, каждый элемент массива меньше или равно n, подсчитать сколько раз встречается каждый элемент". И я попытался написать, но у меня получилась какая-то дичь. #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); int i = 0; const int size = 10000; char str[10000]; int arr[size]; arr[I] = rand() % 9999 + 1; cout « arr[I] « endl; int elem[10000] = { 0 }; for (int i = 0; i < size; i++) elem[str[I]]++; for (i = 0; i < size; i++) if (elem[I]) cout « "Элемент '" « int(i) « "' встречается " « elem[I] « " раз" « endl; system("pause"); return 0; }[/I][/I][/I][/I][/I] Код #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); int i = 0; const int size = 10000; char str[10000]; int arr[size]; arr[I] = rand() % 9999 + 1; cout « arr[I] « endl; int elem[10000] = { 0 }; for (int i = 0; i < size; i++) elem[str[I]]++; for (i = 0; i < size; i++) if (elem[I]) cout « "Элемент '" « int(i) « "' встречается " « elem[I] « " раз" « endl; system("pause"); return 0; }[/I][/I][/I][/I][/I]
Ну я вроде как понял что ты хотел сделать. Ты хотел заполнить массив случайными числами. А вместо этого менял адрес первой ячейки массива на случайное число от 1 до 10000 Вместо: arr = rand()%9999+1 Это: for (int i=0; i<10000; i++) arr=rand()%9999+1; Потому чтонадо числа для каждой ячейки, а не только для одной. Чтобы использовать рандом надо подключить библиотеку: #inlcude <cmath> Вместо: elem[str]++; Это: elem[arr]++; Убери char[str] Там где int elem[10000] = {0} не уверен что в твоем компиляторе заполнится нулями.