Вывод max и min из одномерного массива через дополнительную функцию типа void

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Mary2222
Сообщения: 3
Зарегистрирован: 22 июл 2016, 22:19

Вот мой код. Компилятор ругается в месте, где я начинаю использовать функцию funcMass(...) и тд. Подскажите, где ошибка! :) Заранее спасибо :)

Код: Выделить всё

#include "stdafx.h" 
#include <locale.h> 
#include <conio.h> 
#define q 6 
#define k 7 
#define w 8 
 
void funcMass(int *tmas, int n,int *pImax, int *pImin, int *pDiff) 
{ 
 int nn,nm,i; 
 
 *pImax=tmas[0]; 
 *pImin=tmas[0]; 
 nn=0; 
 nm=0; 
 for (i=0;i<n;i++) 
 { 
  if (tmas[i]<*pImin) 
  {  
   *pImin=tmas[i];  
   nn=i; 
   printf("\n pImin= %d",pImin); 
  } 
  if (tmas[i]>*pImax) 
  {  
   *pImax=tmas[i];  
   nm=i; 
   printf("\n pImax= %d",pImax); 
  } 
 
  *pDiff=tmas[nm]-tmas[nn];   
 } 
 
} 
 
int main(int argc, char*argv[]) 
{ 
 setlocale (0,"RUS"); 
 int j,l,b; 
 int pImax1, pImin1, pDiff1, pImax2, pImin2, pDiff2, pImax3, pImin3, pDiff3; 
 int tmas1[q]={4,4,0,3,7,9}; 
 int tmas2[k]={4,4,0,3,7,9,11}; 
 int tmas3[w]={4,4,0,3,7,8,5,4}; 
 
 funcMass(tmas1[j],q, &pImax1,&pImin1,&pDiff1); 
 funcMass(&tmas2[l],k, &pImax2,&pImin2,&pDiff2); 
 funcMass(&tmas3[b],w, &pImax3,&pImin3,&pDiff3); 
 
 for (j=0;j<q;j++) 
 { 
  printf("\n tmas1[%d]= %d", j, tmas1[j]); 
 } 
 for (l=0;l<k;l++) 
 { 
  printf("\n tmas2[%d]= %d", l, tmas2[l]); 
 } 
 for (b=0;b<w;b++) 
 { 
  printf("\n tmas3[%d]= %d", b, tmas3[b]); 
 } 
 
 printf("\n pImax1= %d",pImax1); 
 printf("\n pImax2= %d",pImax2); 
 printf("\n pImax3= %d",pImax3); 
 printf("\n pImin1= %d",pImin1); 
 printf("\n pImin2= %d",pImin2); 
 printf("\n pImin3= %d",pImin3); 
 printf("\n pDiff1= %d",pDiff1); 
 printf("\n pDiff2= %d",pDiff2); 
 printf("\n pDiff3= %d",pDiff3); 
  
 getch(); 
 return 0; 
}
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

А почему в трёх следующих вызовах:

Код: Выделить всё

funcMass(tmas1[j],q, &pImax1,&pImin1,&pDiff1);
funcMass(&tmas2[l],k, &pImax2,&pImin2,&pDiff2);
funcMass(&tmas3[b],w, &pImax3,&pImin3,&pDiff3);
В первой строке есть амперсанд перед tmas1, а во вторых двух амперсанда нет?

Ругается именно из-за несоответствия типов, так как выражение tmas1[j] имеет тип char, а функция должна получать тип char*.

И это только то, что касается синтаксической ошибки. На самом деле здесь ещё есть и серьёзные логические ошибки. Например переменные j, l, b используются без инициализации, что приведёт к крашу программы во время запуска. Если честно, я даже не понял, зачем они используются для индексации массивов, если функция, судя по всему, должна получать просто массив без всяких смещений.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Mary2222
Сообщения: 3
Зарегистрирован: 22 июл 2016, 22:19

Прогу поправила, все теперь работает, спасибо за ответ! :)
Амперсанда не было чисто из-за случайности(в исходной проге он стоял); в трёх случаях, так как задачу требовалось решить для нескольких массивов :)
Ответить