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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
#1

Перегруз функции - C++

11.08.2009, 20:06. Просмотров 2070. Ответов 29

Вообще задание такое разработать функцию, вычисляющую максимальный элемент:
- в одномерном числовом массиве, состоящем из целых чисел;
- в одномерном числовом массиве, состоящим из вещественных чисел;
- в массиве строк (для этого массива функция должна находить строку с максимальной длиной). С помощью перегруза функции.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include <iostream.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
 
#pragma argsused
//---------------------------------------------------------------------------
int u1(int*op,int a,int max){
 ;
 for(int i=0;i<a;i++){
 if(op[i]>op[max])
   max=i;
 }
 return op[max];
 }
//---------------------------------------------------------------------------
float u2(float*op,int a,int max){
 for(int i=0;i<a;i++){
 if(op[i]>op[max])
    max=i;
 }
 return op[max];
 }
//---------------------------------------------------------------------------
char s3(char op[10], char a, char max){
 for(char i=0;i<a;i++){
 if(sizeof(op[i])>sizeof(op[max]))
    max=i;
 }
return op[max];
}
int main()
{int o,j;
 int*nt=new int[o];
 float*ft=new float[j];
 char l[10];
 cout<<"Vvedite razmer massiva"<<endl;
 cin>>o;
 cout<<"Vvedite razmer massiva"<<endl;
 cin>>j;
 cout<<"Vvedite zeloe chisla"<<endl;//для ввода в массив
  for(int i=0;i<o;i++){
   cin>>nt[i];
  }
 cout<<"Vvedite vehestvennor chisla"<<endl;//для ввода в массив
  for(int i=0;i<j;i++){
   cin>>ft[i];
  }
 cout<<"Vvedite stroku chisel"<<endl;//для ввода в массив строк
 for(int i=0;i<10;i++){
  cin>>(l);
  }
cout<<"Maxmal'nii element massiva zelih chisel= "<<u1(nt,o,0)<<endl;
 cout<<"Maxmal'nii element massiva vehestvennih chisel= "<<u2(ft,j,0)<<endl;
 cout<<"Maxmal'nii element massiva vehestvennih chisel= "<<s3(l,10,' ')<<endl;
        cin.get();
        cin.get();
        return 0;
вот сам текст программы, здесь у меня не работает только подсчет самой длинной строки, хотя если что-то не правильно кроме строк подскажите!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2009, 20:06     Перегруз функции
Посмотрите здесь:

Stack Overflow, перегруз буфера - C++
Добрый день, знаком с перегрузом буфера в теории, хотел бы перейти к практике. Написал простенькую программу, int main(int argc) ...

адский перегруз ЦП - Процессоры
Поле Значение Компьютер Тип компьютера ACPI компьютер на базе x86 Операционная система Microsoft Windows 7 Professional Пакет...

Перегруз процессора - Процессоры
Всегда было интересно, какие последствия могут быть у перегруза процессора, т.е. когда он загружен на 100%, из моих знаний - процессор не...

Перегруз трафика, где искать - Безопасность
(Другой офис, другой комп) Превышение трафика, логи дают три ip адреса pppoe.spdop.ru фильмы не смотрели, обновления не качали. Все...

Перенос сайта, перегруз шлюза - Администрирование Windows
По работе дали такие задания: 1)Нужно скопировать сайт с домена .com на домен .ru вот сайт http://www.konversia.com/ вобщем, как...

Lenovo G560 i3-350m код 17 и перегруз - Ремонт ноутбуков
Доброго всем дня и с Праздником Великой Победы! Lenovo G560 LA-5257P Rev 1.0 проц. i3-350m видео: интегрированное GMA HD мульт...

Перегруз на FloatToChar; Неупорядочный вывод массива - Delphi
Нужно вывести 2х строковый массив (в форму) 1. Самый простой способ это вывести массив А на Lable: for i2:=1 to 2 do begin ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
11.08.2009, 20:12     Перегруз функции #2
не пробовал вместо sizeof использовать strlen? Да у тебя программа вообще-то с ошибками написана и она не рабочая, сначала исправь все ошибки в коде
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
11.08.2009, 20:16     Перегруз функции #3
Код
char l[10];
Это массив символов. Массив строк задается, например, как char l[10][128] - 10 строк вместимостью 128 символов, или как char *l[10] - тогда на каждое l[i] нужно вызывать new и выделять память под строку.
Lolcht0
123 / 121 / 5
Регистрация: 30.03.2009
Сообщений: 766
11.08.2009, 20:20     Перегруз функции #4
а как к твоему коду относится перегруз функций??
Rififi
2338 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
11.08.2009, 20:26     Перегруз функции #5
в одномерном числовом массиве, состоящем из целых чисел;
C++
1
2
3
4
5
6
7
int arr_max(const int* begin, const int* end)
{
   return *std::max_element(begin, end);
}
 
int arr[10];
arr_max(arr, arr+10);
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
11.08.2009, 20:32     Перегруз функции #6
Lolcht0, перегруз к его коду относится как первые две функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int u1(int*op,int a,int max)
{
    for(int i=0;i<a;i++)
        if(op[i]>op[max])
            max=i;
    return op[max];
}
//---------------------------------------------------------------------------
float u1(float*op,int a,int max)
{
    for(int i=0;i<a;i++)
        if(op[i]>op[max])
            max=i;
    return op[max];
}
Lolcht0
123 / 121 / 5
Регистрация: 30.03.2009
Сообщений: 766
11.08.2009, 20:38     Перегруз функции #7
где??? где там такое??? я вижу u1 и u2!! к тому же, очевидно, по условию задачи, третьей тоже было бы неплохо относиться к перегрузу!
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
11.08.2009, 20:43     Перегруз функции #8
ну это я уже исправил , но для начала там код нерабочий)))
Lolcht0
123 / 121 / 5
Регистрация: 30.03.2009
Сообщений: 766
11.08.2009, 20:51     Перегруз функции #9
ну, я даж не знаю, что тут сначала

хотелось бы, навреное, чтобы автор (да, автор, к тебе обращаюсь) разобрался, что такое массив строк, что такое перегруз), и ответил, зачем нужен параметр max в параметрах функции. ну для самопроверки автору нарн можно написать это тут) заодно, если что, и подправим
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
11.08.2009, 21:23  [ТС]     Перегруз функции #10
Спасибо всем, но я не понял Gravity, ничего!!! Объясните по точнее где моя ошибка. Просто перегруз я понял так что имеются функции из которых нужно выбрать программе какую выполнять, если что не так объясните.
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
11.08.2009, 21:45     Перегруз функции #11
Перегрузка - это несколько функций с одинаковыми именами, но разной сигнатурой. Компилятор выбирает нужную ему функцию по сигнатуре
pigah
12 / 12 / 2
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
11.08.2009, 21:52     Перегруз функции #12
сделай так
C++
1
int o=10,j=10;
в Visual studio 2008 заработало
Lolcht0
123 / 121 / 5
Регистрация: 30.03.2009
Сообщений: 766
11.08.2009, 21:56     Перегруз функции #13
скажи, что ты понимаешь под массивом строк, и зачем параметр max?
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
11.08.2009, 21:57     Перегруз функции #14
pigah, ты не понял. Он сначала выделил память, а только потом ввел размеры, а надо сначала получить размерность, а потом выделять память, т.е.
C++
1
2
3
4
5
6
7
    int o,j;
    cout<<"Vvedite razmer massiva"<<endl;
    cin>>o;
    cout<<"Vvedite razmer massiva"<<endl;
    cin>>j;
    int*nt=new int[o];
    float*ft=new float[j];
pigah
12 / 12 / 2
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
11.08.2009, 22:14     Перегруз функции #15
Цитата Сообщение от M128K145 Посмотреть сообщение
pigah, ты не понял. Он сначала выделил память, а только потом ввел размеры, а надо сначала получить размерность, а потом выделять память, т.е.
C++
1
2
3
4
5
6
7
    int o,j;
    cout<<"Vvedite razmer massiva"<<endl;
    cin>>o;
    cout<<"Vvedite razmer massiva"<<endl;
    cin>>j;
    int*nt=new int[o];
    float*ft=new float[j];
ну да а еще и освободить память ему не помешает
C++
1
2
delete nt;
delete ft;
иначе начнутся проблемы
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
11.08.2009, 22:16     Перегруз функции #16
Цитата Сообщение от pigah Посмотреть сообщение
иначе начнутся проблемы
Со здоровьем?
pigah
12 / 12 / 2
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
11.08.2009, 22:28     Перегруз функции #17
Цитата Сообщение от Gravity Посмотреть сообщение
Со здоровьем?
с компьютером ты память занял и не освободил)
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
11.08.2009, 22:34     Перегруз функции #18
Цитата Сообщение от pigah Посмотреть сообщение
с компьютером ты память занял и не освободил)
После выхода из программы, занятая память автоматически обозначается как свободная и становится доступной для других приложений, так что ничего страшного в этом нет. Но с т.з. хорошего тона программирования, оно конечно верно явно освобождать память.
M128K145
11.08.2009, 22:56
  #19

Не по теме:

страшнее если не закроеш поток, в многопоточной программе,
он потом может всплыть загрузив одно из ядер проца

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2009, 23:04     Перегруз функции
Еще ссылки по теме:

Перегруз и тормоза на процессоре Intel(R) Core(TM) i5 CPU M430 @ 2.27GHz - Процессоры
Помогите пожалуйста решить проблему с перегрузкой процессора: Процессор: Intel(R) Core(TM) i5 CPU M430 @ 2.27GHz Винда 7 При запуске...

Очень много процессов в диспетчере + рекламные вкладки в хроме и опере. Перегруз системы - Удаление вирусов
Добрый день! Вирусы с переносного жд, были занесены на ПК. Перегрузка системы 90-100%, свободной памяти остается 0-5 мб. Много...

Собственный класс String, неправильный перегруз операции "=", некорректное восприятие полем класса инициализир - Visual C++
class String { int const *MAX; char *str; public: String(); void Set(char*); void Print(); ~String(); void...

Перегруз ЦП двумя процессами: rundll32.exe и svchost.exe (внутри подробнее) - Windows 7
Доброго времени суток. Разделю вопрос сразу на 2 части. 1) svchost.exe. Беспокоил давно, но выходил из ситуации следующим образом....

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции - C++
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая должна бы вернуть значение, отталкиваясь от первой. Возможно...


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

Или воспользуйтесь поиском по форуму:
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
11.08.2009, 23:04     Перегруз функции #20
а я бы не усложнял. сигнатуру сделал бы максимально похожей, т.к. отсутствие концепции - хуже неудачной концепции.
итак, наши перегруженные ф-ии будут получать указатель на первый элемент массива и длину его, и возвращать индекс элемента массива с максимальным значением, или -1 если массив пуст. само значение из массива достать для вызывающего - не проблема.

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
37
38
39
/////////////////
int getMax (const int *pArg, int size){
  int max = MIN_INT;
  int iMax = -1;
  for (int i = 0; i < size; i++){
    if (*(pArg+i) > max){
      max =  *(pArg+i);
      iMax = i;
    }
  }
  return i;
}
 
/////////////////
int getMax (const double *pArg, int size){
  double max = MIN_DOUBLE;
  int iMax = -1;
  for (int i = 0; i < size; i++){
    if (*(pArg+i) > max){
      max =  *(pArg+i);
      iMax = i;
    }
  }
  return i;
}
 
/////////////////
int getMax (const char **pArg, int size){
  int maxSize = 0;
  int iMax = -1;
  for (int i = 0; i < size; i++){
    int sz = ::strlen (*(pArg+i));
    if (sz > maxSize){
      maxSize = sz;
      iMax = i;
    }
  }
  return i;
}
Yandex
Объявления
11.08.2009, 23:04     Перегруз функции
Ответ Создать тему
Опции темы

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