Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 00:30   #1
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию Массив С++

Доброй ночи( по крайней мере сейчас в Харькове ночь)

Проблема вот в чем. Студент ЗАО. Дали лабы по С++. И вот сижу пытаюсь сделать все "по гуглу" и все равно выходит не тот результат.

Цитата:
Найти количество элементов в массиве, равное первому элементу
Задача в принципе простая,алгоритм понимаю. А вот при заполнении массива компилятор дальше введения 1 числа не идет( т.е осуществляется выход из программы. Товарищи программисты помогите пожалуйста.

вот код :

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    cout<<"Vvedite kolichestvo elementov massiva :";
    int n;
    cin>>n;
    int a[n];
    int i;
    for(i=0;i<=n;i++);
    {
     cout<<"vvedite element";
     cin>>a[i];
    }
   
   cin.get();
   cin.get();
   return EXIT_SUCCESS;
}
ЗЫ : использую Dev-C++
MeTeOpA вне форума Ответить с цитированием
Старый 09.12.2010, 01:11   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Странно, что ваш компилятор пропускает такую
Код:
int n;
cin>>n;
int a[n];
запись. Мой бы ругнулся. Чтобы подобным образом создать массив, n должна быть константой. А если вы хотите вручную вводить размерность массива, то нужно воспользоваться динамическим массивом:
Код:
int n;
cin>>n;
int* a = new int[n];
с синтаксисом у меня могут быть проблемы, потому что давно не пользовалась сишными массивами.
Дальше ничего не меняете. Обращение к динамическому массиву такое же как и к обычному. Единственное - в конце программы нужно удалить выделенную память:
Код:
delete[] a;
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 09.12.2010, 01:13   #3
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Спасибо, но проблему решил уже другим способом

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    cout<<"Vvedite kolichestvo elementov massiva :";
    int n;
    cin>>n;
    int a[n];
    int i;
    for(i=1;i<=n;i++)// Просто здесь поставил ; :)
    {
     cout<<"vvedite element : ";
     cin>>a[i];
    }
   
   cin.get();
   cin.get();
   return EXIT_SUCCESS;
}
MeTeOpA вне форума Ответить с цитированием
Старый 09.12.2010, 01:17   #4
sergey.d
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 98
По умолчанию

Исправьте цикл
Код:
for(i=1;i<=n;i++)
на
Код:
for(i=0;i<n;i++)
массивы индексируются с 0
sergey.d вне форума Ответить с цитированием
Старый 09.12.2010, 01:38   #5
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Понимаю... оптимизация...)))
MeTeOpA вне форума Ответить с цитированием
Старый 09.12.2010, 02:01   #6
sergey.d
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 98
По умолчанию

Да нет, никакой оптимизации, просто при i == n будет происходить обращение за границы массива, что не есть хорошо.
sergey.d вне форума Ответить с цитированием
Старый 09.12.2010, 02:07   #7
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

будем знать спасибо
MeTeOpA вне форума Ответить с цитированием
Старый 09.12.2010, 06:14   #8
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Все-таки сделайте массив динамическим. Это нетрудно, а вот с самого начала привыкать к неправильным принципам (на которые по-хорошему компилятор должен ругаться нецензурными словами) не самый перспективный подход.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 09.12.2010, 10:48   #9
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Все-таки сделайте массив динамическим. Это нетрудно, а вот с самого начала привыкать к неправильным принципам (на которые по-хорошему компилятор должен ругаться нецензурными словами) не самый перспективный подход.
ок... сессия пройдет, сяду разберусь... а то щас просто голова кругом идет...
MeTeOpA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив А(20). Получить массив В(20), в котором В(1)=А(2), В(2)=А(1), В(3)=А(4), В(4)=А(3) и т.д. Выве nikita1 Помощь студентам 5 01.12.2010 18:16
Указатель на массив указателей на массив char'ов... SrgGld Общие вопросы C/C++ 0 19.11.2010 23:35
Как конвертировать массив символов в массив байт davinci C++ Builder 6 30.10.2010 18:09
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06