Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
1

Почему обращение к недоступному адресу в памяти

22.12.2012, 20:13. Просмотров 1135. Ответов 1
Метки нет (Все метки)


Почему при проверке кода(компиляции) выскакивает сообщение :"Недостаточный размер массивов или обращение по недоступному адресу в памяти" ? Хотя размер достаточно большой 1000*1000.

Программист Денис c детства мечтал побывать в Антарктиде, но почему-то регулярных рейсов туда нет. Поэтому Денис все лето изучал Антарктиду с помощью соседнего кинотеатра. Теперь он знает, что в Антарктиде водится несколько видов пингвинов:

Императорские пингвины (Emperor Penguins)
Малые пингвины (Little Penguins)
Пингвины Макарони (Macaroni Penguins)

К сожалению, в мультфильмах не было сказано, какой вид пингвинов самый многочисленный. Денис решил выяснить это: он посмотрел эти мультфильмы еще раз, и каждый раз, когда видел пингвина, записывал в блокнот название его вида. Сейчас Денис дал вам блокнот с просьбой выяснить, какой вид пингвинов самый многочисленный.
Исходные данные
В первой строке записано целое число n — количество записей в блокноте (1 ≤ n ≤ 1000). В каждой из следующих n строк записано по одному виду пингвинов. Среди видов встречаются только «Emperor Penguin», «Little Penguin» и «Macaroni Penguin».
Результат
Выведите самый популярный вид пингвинов. Гарантируется, что такой вид только один.
На входе
7
Emperor Penguin
Macaroni Penguin
Little Penguin
Emperor Penguin
Macaroni Penguin
Macaroni Penguin
Little Penguin

На выходе
Macaroni Penguin




C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <cstdio>
 
using namespace std;
 
int main()
{
int n, e=0, m=0, l=0;
char **mas=new char*[1000];
 for (int i=0; i<1000; i++)
  mas[i]=new char[40];
 
cin >> n;
 
for (int i=0; i<=n; i++)
 gets(mas[i]);
for (int i=0; i<=n; i++)
 {
 if (mas[i][0] == 'M')
  m++;
 if (mas[i][0] == 'E')
  e++;
 if (mas[i][0] == 'L')
  l++;
 }
 
if (m>e && m>l)
 cout << "Macaroni Penguin" << endl;
if (l>m && l>e)
 cout << "Little Penguin" << endl;
if (e>l && e>m)
 cout << "Emperor Penguin" << endl;
 
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2012, 20:13
Ответы с готовыми решениями:

Обращение к конкретному адресу в памяти
Первый вопрос: как с помощью указателя увидеть содержимое по конкретному адресу, например, по...

Обращение напрямую к адресу оперативной памяти
Подскажите, как в си шарп обращаться к определённым адресам оперативной памяти и читать оттуда...

инструкция по адресу 0x7c91ac4a обратилась к памяти по адресу 0x00000010.Память не может быть written
Помогите разобраться пожалуйста!!!!! С:/rsit info.txt logfile of random's system information tool...

Инструкция по адресу “0x490e355” обратилась к памяти по адресу “0x065ea847” память не может быть “written”
Здравствуйте, при загрузки картинки в хроме появляется такая ошибка и хром дохнет, также это...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
1
Модератор
Эксперт С++
10460 / 8712 / 5263
Регистрация: 18.12.2011
Сообщений: 23,269
22.12.2012, 20:45 2
У меня все компилируется и правильно работает.
Заметил только логическую ошибку.
Количество вводимых строк не n, а (n+1).
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2012, 20:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Ошибка «Инструкция по адресу 0х0093bd32 обратилась к памяти по адресу 0х00000000.Память не может быть «read»
Недавно установили 2ой Windows на диск D, старый остался на C. На первом Windows программа iTunes...

Ошибка: инструкция по адресу 0x00aeb5e2 обратилась к памяти по адресу 0x00000008.память не может быть read
инструкция по адресу 0x00aeb5e2 обратилась к памяти по адресу 0x00000008.память не может быть read...

Инструкция по адресу 0х68е61526 обратилась к памяти по адресу 0xcdcdcdbd память не может быть "read"
приобрел джойстик speedlink black widow, установил дрова, а после подключения джойстика к компу не...

Инструкция по адресу 0x73ce8f18 обратилась к памяти по адресу 0х00000004. Память не может быть "read"
Помогите! Не знаю, что случилось :( мой нетбук перестал включаться. В том месте, где обычно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.