Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
#1

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

22.12.2012, 20:13. Просмотров 459. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2012, 20:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему обращение к недоступному адресу в памяти (C++):

Обращение по адресу к элементам структуры - C++
Есть структура fs: struct fs { f_element; s_element; ... n_element; }; Есть массив указателей на...

Прочитать из памяти по адресу - C++
Задача: в памяти по адресу 0040:0010h (0x00400010) записано слово (информация о подключенном оборудовании). Нужно прочитать 12-й бит этого...

Данные по адресу памяти - C++
У меня есть адрес например 0x11E9B62C как узнать что по нему записанно?

Доступ к памяти по адресу - C++
Есть структура, элементы которой адрес на начало массива в памяти и его размер. Адреса хранятся в 16-ричном формате. Мне нужно распечатать...

Доступ к произвольному адресу памяти - C++
Есть известный адрес в памяти с известным значением int Хотел бы проверить это значение после того как введу адрес памяти вручную. ...

Выделение памяти по известному адресу - C++
Всем привет. Вопрос сообственно в заголовке темы. Как выделить память по нужному мне адресу, например: Я хочу выделить память n*...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6359 / 5923 / 1920
Регистрация: 18.12.2011
Сообщений: 15,227
Завершенные тесты: 1
22.12.2012, 20:45 #2
У меня все компилируется и правильно работает.
Заметил только логическую ошибку.
Количество вводимых строк не n, а (n+1).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2012, 20:45
Привет! Вот еще темы с ответами:

Взятие обьекта по адресу в памяти - C++
Допустим, я знаю что по адресу 0x13242341 находится произвольный обьект. Как возвратить указатель типа void на данный адрес Типо так?...

Как сделать массив в памяти по фиксированному адресу? - C++
Есть микропроцессор, и в нем по жестко зафиксированному адресу находится массив ячеек. Допустим типа int. Как в Си мне организовать к нему...

Вызов функции-члена класса по адресу в памяти - C++
Всем хорошего дня :) Допустим, что где-то есть static функция, не принимающая аргументов и ничего не возвращающая. Имея один лишь...

Вызвано исключение по адресу 0x0FD466CB (ucrtbased.dll). Динамическое выделение памяти - C++
Проблема в динамическом выделении памяти. Функция multiply доходит до возвращения объекта и вылетает исключение. Если функция вернет просто...


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

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

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