Незнаю Как Сделать Програму На С++

  • Автор темы vovamakarovych
  • Дата начала
Статус
Закрыто для дальнейших ответов.
V

vovamakarovych

Гость
#1
у меня есть 2 програмы. Мне нужно их переписать с использованием методов программирования с помощью функций:

- Функция для ввода значений массива с клавиатуры;
- Функция для вычисления значений по вашему варианту;
- Функция для вывода результатов на экран.

Мои програмы:
1
C++:
 #include <iostream> 
using namespace std;

int main() {
setlocale(LC_ALL,"Russian");
const int arraySize = 10;
int A[arraySize];				
int index_min = 0;								 
cout<<"Введите массив из 10 элементов.\n";
for (int j=0; j<arraySize; j++)
{
cout << "A[" << j << "]= ";
cin>>A[j];
}
int min_elem = A[0];
for (int j = 0; j < arraySize; j++)
{
if (min_elem > A[j])
{
min_elem = A[j];
index_min = j;
}
}
cout << "Минимальное значение = " << min_elem << " его индекс =" << index_min<< '\n';
system("pause");
}
2
C++:
#include <iostream>
using namespace std;
int main() 
{
setlocale(LC_ALL,"Russian");
const int arraySize = 10;
int A[arraySize];
int *ptr=&A[0];
int index_max = 0;							 

cout<<"Введите массив из 10 элементов.\n";
for (int j=0; j<arraySize; j++)
{
cout << "A[" << j << "]= ";
cin>>ptr[j];
}
int max_elem = A[0];

for (int j = 0; j < arraySize; j++)
{
if (max_elem < ptr[j])

max_elem = ptr[j];
index_max = j;

}
cout << "Максимальное значение = " << max_elem << " его индекс =" << index_max<< '\n';
system("pause");
}
 

Whatka

Well-Known Member
09.10.2011
428
4
24
Минск
#2
вот приблизительно набросал (1) :

C++:
 void vvod(int *A,int arraySize)
{
int j;
cout<<"Введите массив из 10 элементов.\n";
for (j=0; j<arraySize; j++)
{
cout << "A[" << j << "]= ";
cin>>A[j];
}
}
int function(int arraySize,int *A,int min_elem,int index_min )
{
int j;
for (j=0;j<arraySize;j++)
{
if (min_elem > A[j])
{
min_elem = A[j];
index_min = j;
}
}
return min_elem;
}
int function1(int arraySize,int *A, int min_elem,int index_min )
{
int j;
for (j=0;j<arraySize;j++)
{
if (min_elem > A[j])
{
min_elem = A[j];
index_min = j;
}
}
return index_min;
}

void out(int min_elem ,int index_min)
{
cout << "Минимальное значение = "<< min_elem << " его индекс =" << index_min<< '\n';
}
int main()
{
setlocale(LC_ALL,"Russian");
const int arraySize(10);
int A[arraySize],index_min(0);				
vvod(A,arraySize);
int min_elem=A[0];
min_elem=function(arraySize,A,min_elem,index_min);
index_min=function1(arraySize,A,min_elem,index_min);
out(min_elem ,index_min);
}

вторую сам сделаешь
 
V

vovamakarovych

Гость
#3
вот приблизительно набросал (1) :

C++:
 void vvod(int *A,int arraySize)
{
int j;
cout<<"Введите массив из 10 элементов.\n";
for (j=0; j<arraySize; j++)
{
cout << "A[" << j << "]= ";
cin>>A[j];
}
}
int function(int arraySize,int *A,int min_elem,int index_min )
{
int j;
for (j=0;j<arraySize;j++)
{
if (min_elem > A[j])
{
min_elem = A[j];
index_min = j;
}
}
return min_elem;
}
int function1(int arraySize,int *A, int min_elem,int index_min )
{
int j;
for (j=0;j<arraySize;j++)
{
if (min_elem > A[j])
{
min_elem = A[j];
index_min = j;
}
}
return index_min;
}

void out(int min_elem ,int index_min)
{
cout << "Минимальное значение = "<< min_elem << " его индекс =" << index_min<< '\n';
}
int main()
{
setlocale(LC_ALL,"Russian");
const int arraySize(10);
int A[arraySize],index_min(0);				
vvod(A,arrausize);
int min_elem=A[0];
min_elem=function(arraySize,A,min_elem,index_min);
index_min=function1(arraySize,A,min_elem,index_min);
out(min_elem ,index_min);
}

вторую сам сделаешь
не выходит сделать(((
 

Whatka

Well-Known Member
09.10.2011
428
4
24
Минск
#4
ты издеваешься???я тебе полностью написал 1ую,разберись и напиши.
что не понятно спрашивай
 
V

vovamakarovych

Гость
#5
ты издеваешься???я тебе полностью написал 1ую,разберись и напиши.
что не понятно спрашивай
от мой код, индекс не верно показывает((
C++:
#include <iostream>
#include <iomanip>

using namespace std;
void vvod(int *A,int arraySize)
{
int j;
cout<<"Введите массив из 10 элементов.\n";
for (j=0; j<arraySize; j++)
{
cout << "A[" << j << "]= ";
cin>>A[j];
}
}
int function(int arraySize,int *A,int max_elem,int index_max )
{
int j;
for (j=0;j<arraySize;j++)
{
if (max_elem < A[j])
{
max_elem = A[j];
index_max = j;
}
}
return max_elem;
}
int function1(int arraySize,int *A, int max_elem,int index_max )
{
int j;
for (j=0;j<arraySize;j++)
{
if (max_elem < A[j])
{
max_elem = A[j];
index_max = j;
}
}
return index_max;
}

void out(int max_elem ,int index_max)
{
cout << "Максемальное значение = "<< max_elem << " его индекс =" << index_max<< '\n';
}
int main()
{
setlocale(LC_ALL,"Russian");
const int arraySize(10);
int A[arraySize],index_max(0);				
vvod(A,arraySize);
int max_elem=A[0];
max_elem=function(arraySize,A,max_elem,index_max);
index_max=function1(arraySize,A,max_elem,index_max);
out(max_elem ,index_max);
system("Pause");
}
 

Whatka

Well-Known Member
09.10.2011
428
4
24
Минск
#6
C++:
#include <iostream>
#include <iomanip>

using namespace std;
void vvod(int *A,int arraySize)
{
int j;
cout<<"Введите массив из 10 элементов.\n";
for (j=0; j<arraySize; j++)
{
cout << "A[" << j << "]= ";
cin>>A[j];
}
}
int function(int arraySize,int *A,int max_elem,int index_max )
{
int j;
for (j=0;j<arraySize;j++)
{
if (max_elem < A[j])
{
max_elem = A[j];
index_max = j;
}
}
return max_elem;
}


void out(int max_elem ,int index_max)
{
cout << "Максемальное значение = "<< max_elem << " его индекс =" << index_max<< '\n';
}
int main()
{
setlocale(LC_ALL,"Russian");
const int arraySize(10);
int A[arraySize],index_max(0),j(0);				
vvod(A,arraySize);
int max_elem=A[0];
max_elem=function(arraySize,A,max_elem,index_max);
while(A[j]!=max_elem)
j++;
index_max=j;
out(max_elem ,index_max);
system("Pause");
}


вот всё правильно работает цикл в функцию сам занесёшь
 
R

rrrFer

Гость
#7
Whatka
если не секрет, в чем стратегический замысел написания двух различных функций function и function1 ?

ЗЫ. а работает неверно, проверь на
1 2 3 4 5 6 7 8 9 0

выведет что индекс наименьшего элемента = 0

как-то криво все, извиняюсь )

Добавлено: а вот, щас исправил ) теперь результат правильный, но зачем нам:
Код:
while(A[j]!=max_elem)
j++;
неужели юзе этого лишнего цикла не обойтись?

Добавлено: поправил функцию вычисления и main
Код:
#include <iostream>
#include <iomanip>

using namespace std;
void vvod(int *A,int arraySize)
{
int j;
cout<<"Введите массив из 10 элементов.\n";
for (j=0; j<arraySize; j++)
{
cout << "A[" << j << "]= ";
cin>>A[j];
}
}

int function( int arraySize, int *A, int &index_max ) {
int j;

index_max = 0;
for( j = 0; j < arraySize; j++ )
if( A[ index_max ] < A[ j ] )
index_max = j;

return A[ index_max ];
}


void out(int max_elem ,int index_max)
{
cout << "Максемальное значение = "<< max_elem << " его индекс =" << index_max<< '\n';
}

int main() {
setlocale(LC_ALL,"Russian");

const int 
arraySize = 10;
int		A[ arraySize ],
max, imax;

vvod( A, arraySize );

max = function( arraySize, A, imax );

out( max, imax );

system( "Pause" );
}
но, что-то мне до сих пор не нравится :facepalm:
 

Whatka

Well-Known Member
09.10.2011
428
4
24
Минск
#8
нет конечно можно по другому и без цикла
я бы и сам по другому делал
НО это не моё решение а его
суть в правильном ответе,если поймёт как работает сможет оптимизировать сам
...
я думаю
 
Статус
Закрыто для дальнейших ответов.