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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2012, 15:04   #1
Timmon
Пользователь
 
Регистрация: 06.09.2011
Сообщений: 12
По умолчанию посмотрите ошибку в программе с++

задание: Реализовать шаблон функции max_mas2, обеспечивающей поиск максимального элемента двумерного массива. + Реализовать шаблон функции согласно варианту задания. Для проверки работоспособности шаблона функции написать тестирующую программу, в которой функция вызывается для разнотипных данных.

програму саму написал, все работает.единственное - выводить должен больший элемент, а выводит все время только первый. в обоих массивах.

Код:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include<conio.h>
using namespace std;

 template <class T>
 T max(T **c, const int size1, const int size2)
{
  T maxx=c[0][0];
  for(int i = 0; i < size1; ++i)
  for(int j = 0; j < size2; ++j)
  {
    if (c[i][j] > maxx)
      maxx = c[i][j];
  return maxx;
  }
}

int main()
{
 srand(time(NULL));
 int i,j,na,nb,maxa,**a;
 double maxb, **b;
na = nb = 2;

a=new int*[na];       //динамическое выделение памяти двумерному массиву a
for(i=0;i<na;i++){a[i]=new int[na];}

cout<< "\nMade " << na << " element (s) array a: "<< endl;
for(i=0;i<na;i++)
{
for (j=0;j<na;j++)
 {
  a[i][j]=rand()%201-100;
  cout << a[i][j]<<"\n";
}}

b=new double*[nb]; //динамическое выделение памяти двумерному массиву b
for(i=0;i<nb;i++){b[i]=new double[nb];}

cout <<"\nMade " <<nb <<" element (s) array b: "<< endl;
for (i=0;i<nb;i++)
for(j=0;j<nb;j++)
  {

   b[i][j]=201.0*rand()/RAND_MAX-100.0;
   cout << b[i][j]<<"\n";
  }

  maxa= max(a,na,na);
 cout <<"\nMax element array a: " <<maxa << endl;

 maxb= max(b,nb,nb);
 cout <<"\nMax element array b: " <<maxb << endl;

  system("pause");
delete []a;
delete []b;
  return 0;
  }

Последний раз редактировалось Timmon; 16.10.2012 в 18:14.
Timmon вне форума Ответить с цитированием
Старый 18.10.2012, 20:15   #2
LynXzp
Пользователь
 
Аватар для LynXzp
 
Регистрация: 04.10.2012
Сообщений: 95
По умолчанию

минимизируй вопрос, вдруг кто ответит (сам ++ не знаю, слишком все там перегружено)
Пишу на чистом С, плюсы спилил.
LynXzp вне форума Ответить с цитированием
Старый 19.10.2012, 07:43   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,758
По умолчанию

Выводит именно то, что написано.
Читаем:
Код:
  for(int i = 0; i < size1; ++i)
  for(int j = 0; j < size2; ++j)
  {
    if (c[i][j] > maxx)
      maxx = c[i][j];
  return maxx;
  }
Сравнить с первым, если больше заменить и вернуть переменную. Может не стоило ретурн в цикл вносить?
p51x вне форума Ответить с цитированием
Старый 20.10.2012, 01:21   #4
Timmon
Пользователь
 
Регистрация: 06.09.2011
Сообщений: 12
По умолчанию

спасибо)не углядел
Timmon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Недочет в задаче. Неполное решение Yankeee Помощь студентам 0 21.03.2012 15:28
Небольшой такой вопросик ... совсем небольшой .. zipo666 Помощь студентам 0 18.12.2011 12:49
Доработка Java программы. Не могу найти недочет в программе. ISV-777 Общие вопросы по Java, Java SE, Kotlin 2 04.11.2011 20:24
Нужно исправить интересный недочет hex666 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.03.2010 20:45
Может кто увидит недочет...(срочно) Sлавян Паскаль, Turbo Pascal, PascalABC.NET 2 07.05.2008 16:19