Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> error C2078: слишком много инициализаторов, Выдает ошибку, помогите исправить 
:(
    Опции темы
olegarh
Дата 20.11.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.2.2010

Репутация: нет
Всего: нет



Добрый день, есть функция которая находит 1 максимальный элемент в массиве и выводит его индекс 
Код

int mymax(int *arrmax, int p){
    int max = arrmax [0];
    int indx;
    for (int i=1; i<p; ++i)
        if (max<arrmax[i]){
            max = arrmax[i];
            indx=i;
        }
    return indx;
}

функция вызывается из main.cpp
Код

#include <iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    int *arr;
    arr = new int[n];
    for (int i=0; i<n; ++i)
        cin>>arr[i];
    int mymax (*arr, n);
    return 0;
}

при компиляции выдает ошибку: error C2078: слишком много инициализаторов
как исправить?

Это сообщение отредактировал(а) olegarh - 20.11.2010, 15:36
PM MAIL   Вверх
SVN74
Дата 20.11.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 1
Всего: 18



Код

#include <iostream>
using namespace std;
      
int mymax (*arr, n);
int main()
{
    int n;
    cin>>n;
    int *arr;
    arr = new int[n];
    for (int i=0; i<n; ++i)
        cin>>arr[i];
    cout << mymax (arr, n);
    delete arr;
    return 0;
}



Это сообщение отредактировал(а) SVN74 - 20.11.2010, 15:43
PM MAIL WWW   Вверх
sQu1rr
Дата 20.11.2010, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 3
Всего: 13



Код

int var = mymax ( arr, n );

в var сохраниться результат функции
arr передаем по указателю, но так как он и так является указателем, нужно БЕЗ *

Добавлено через 40 секунд
Ой, опаздал,

Цитата(SVN74 @  20.11.2010,  15:42 Найти цитируемый пост)
delete arr;

Код

delete [] arr;

PM MAIL Skype GTalk   Вверх
SVN74
Дата 20.11.2010, 15:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 1
Всего: 18



delete [] arr;
точно, провтыкал...
Так там и функция нерабочая...

Это сообщение отредактировал(а) SVN74 - 20.11.2010, 15:48
PM MAIL WWW   Вверх
olegarh
Дата 20.11.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.2.2010

Репутация: нет
Всего: нет



Функция рабочая)) все уже работает спасибо)))
в функции только 
Код

indx=i;

надо заменить на 
Код

indx=i+1;

PM MAIL   Вверх
sQu1rr
Дата 20.11.2010, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 3
Всего: 13



Цитата(olegarh @  20.11.2010,  15:53 Найти цитируемый пост)
Функция рабочая)) все уже работает спасибо)))

Но кривая до ужаса
Код

int mymax(int *arrmax, int p){
    int max = arrmax [0]; // Понятно начинаем с нуля
    int indx = 1; // Индекс... ОО
    for (int i=1; i<p; ++i){ // Ну ладно
        if (max<arrmax[i]){ // Понятно
            max = arrmax[i]; // Тоже понятно
            indx++; // ОО чем i не нравиться
        }
        else indx++; // ОО... просто... ладно
    }
    return indx; // Возвращяем index последнего элемента ( == return p )
}

Во первых это все можно записать так
Код

int mymax(int *arrmax, int p){
    int max = arrmax[0];
    int i;
    for ( i = 1; i < p; ++i ) if ( max < arrmax[i] ) max = arrmax[i];
    return i;
}

Но зачем max сохранять если он не используется...
Может нужно гдето сохранить index?
Тогда може так?
Код

int mymax(int *arrmax, int p){
    int max = arrmax[0];
    int i, ret;
    for ( i = 1; i < p; ++i )
     if ( max < arrmax[i] )
     {
         max = arrmax[i];
         ret = i;
     }
    return ret; // Ну или ret+1 как угодно
}

PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.