Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > помогите с решением задачи на С


Автор: b44 21.5.2006, 13:31
описать процедуру Split1 (A, NA, B, NB, C, NC) формирующую по вещественному массиву А  размера NA, два вещественных массива В и С размера NB и NC соответственно, при этом массив В содержит все элементы массива А с нечетными порядковыми номерами, а массив С все элементы с четными порядковыми номерами. Применить эту процедуру к данному массиву А размера NA и сперва ввывести размер и содержимое полученного массива В, а потом размер и содержимое полученного массива С.

пожалуйста напишите код!!! 

Автор: mr.Anderson 21.5.2006, 14:56
Для массива чисел с 10-ю элементами, заполненному как 0, 1, 2, 3... и так далее до 9-ти, можно написать такой код:
Код

//---------------------------------------------------------------------------

#include <iostream>
#include <conio>

using namespace std;
//---------------------------------------------------------------------------

const int size=5;
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

void Split1(const int array[], int an, int b[], int bn, int c[], int cn);
//---------------------------------------------------------------------------

int main(void)
{
 const int arraysSize=10;
 int array[arraysSize],
     newarr1[size],
     newarr2[size];

 for(int x=0; x<arraysSize; x++)
  array[x]=x;

 cout<<"Startovyj massiv: ";

 for(int k=0; k<arraysSize; k++)
  cout<<array[k]<<" ";

 Split1(array, arraysSize, newarr1, arraysSize, newarr2, arraysSize);

 cout<<"\n\nMassiv nechetnyx elementov b[]\n-----------------------------\nRazmer massiva: "<<size<<"\nSoderzhimoe massiva: ";

 for(int j=0; j<size; j++)
  cout<<newarr1[j]<<" ";

 cout<<"\n\nMassiv chetnyx elementov c[]\n-----------------------------\nRazmer massiva: "<<size<<"\nSoderzhimoe massiva: ";

 for(int h=0; h<size; h++)
  cout<<newarr2[h]<<" ";

 getch();
}
//---------------------------------------------------------------------------

void Split1(const int array[], int an, int b[], int bn, int c[], int cn)
{
 if( bn<(an/2+1) || cn<(an/2+1) ) return;

 int temp_arr1[size],
     temp_arr2[size];

 for(int i=0; i<an; i++)
 {
  if(array[i]%2 != 0)
   temp_arr1[i/2]=array[i];
  else temp_arr2[i/2]=array[i];
 }

 for(int m=0; m<size; m++)
  b[m]=temp_arr1[m];

 for(int n=0; n<size; n++)
  c[n]=temp_arr2[n];
}
//---------------------------------------------------------------------------

Если нужно другой размер основного (стартового) массива, просто меняешь переменную arraysSize на то значение, которое тебе нужно.
Если нужен другой размер вспомогательных массивов, то меняешь глобальную переменную size так, как тебе надо.

Добавлено @ 14:57 
Ой, сорри, не учел, что массив вещественных чисел... Ну, я думаю, сам переделаешь типы?    

Автор: b44 21.5.2006, 18:11
Sim7 подскажи почему прога не запускается после переделки!!!

Код

#include <iostream.h>
#include <conio.h>
const int size=5;
void Split1(const int array[], int an, int b[], int bn, int c[], int cn);
int main(void)
{
 const int arraysSize=10;
 int array[arraysSize],
     newarr1[size],
     newarr2[size];
 for(int x=0; x<arraysSize; x++)
 {
 array[x]=x;
 cout<<"Startovyj massiv: ";
 }
 for(int k=0; k<arraysSize; k++)
 {
 cout<<array[k]<<" ";
 }
 Split1(array, arraysSize, newarr1, arraysSize, newarr2, arraysSize);
 cout<<"\n\nMassiv nechetnyx elementov b[]\n-----------------------------\nRazmer massiva: "<<size<<"\nSoderzhimoe massiva: ";
 for(int j=0; j<size; j++)
 {
 cout<<newarr1[j]<<" ";
 cout<<"\n\nMassiv chetnyx elementov c[]\n-----------------------------\nRazmer massiva: "<<size<<"\nSoderzhimoe massiva: ";
 }
 for(int h=0; h<size; h++)
 {
 cout<<newarr2[h]<<" ";
 }
getch();
}
void CreateArrays(const int array[], int an, int b[], int bn, int c[], int cn)
{
 if( bn<(an/2+1) || cn<(an/2+1) ) return;

 int temp_arr1[size],
     temp_arr2[size];
 for(int i=0; i<an; i++)
 {
  if(array[i]%2 != 0)
   temp_arr1[i/2]=array[i];
  else temp_arr2[i/2]=array[i];
 }
 for(int m=0; m<size; m++)
 {
 b[m]=temp_arr1[m];
 }
 for(int n=0; n<size; n++)
 {
 c[n]=temp_arr2[n];
 }
}


Добавлено @ 18:13 
переделки всмысле под Turbo С!!! 

Автор: mr.Anderson 21.5.2006, 19:12
Код

for(int x=0; x<arraysSize; x++)
 {
 array[x]=x;
 cout<<"Startovyj massiv: ";
 }

Вот этот фрагмент в корне неверный. У тебя будет постоянно выводиться надпись "Startovyj massiv". Надо заменить фрагмент
Код

 for(int x=0; x<arraysSize; x++)
 {
 array[x]=x;
 cout<<"Startovyj massiv: ";
 }
 for(int k=0; k<arraysSize; k++)
 {
 cout<<array[k]<<" ";
 }

На такое:
Код

cout<<"Startovyj massiv: ";

for(int x=0; x<arraysSize; x++)
{
 array[x]=x;
 cout<<x<<" ";
}

У меня так и было написано, я не знаю, зачем ты это поменял.

Вот это тоже неверно:
Код

for(int j=0; j<size; j++)
 {
 cout<<newarr1[j]<<" ";
 cout<<"\n\nMassiv chetnyx elementov c[]\n-----------------------------\nRazmer massiva: "<<size<<"\nSoderzhimoe massiva: ";
 }
 for(int h=0; h<size; h++)
 {
 cout<<newarr2[h]<<" ";
 }

Слушай, зачем ты поменял все это? Это же не влияет на алгоритм работы, зачем было менять все на то, что неверно работает! Смени указанный фрагмент на такой:
Код


 cout<<"\n\nMassiv nechetnyx elementov b[]\n-----------------------------\nRazmer massiva: "<<size<<"\nSoderzhimoe massiva: ";

 for(int j=0; j<size; j++)
  cout<<newarr1[j]<<" ";

 cout<<"\n\nMassiv chetnyx elementov c[]\n-----------------------------\nRazmer massiva: "<<size<<"\nSoderzhimoe massiva: ";

 for(int h=0; h<size; h++)
  cout<<newarr2[h]<<" ";

А больше ты ничего и не менял. Только скобок зачем-то наставил фигурных, да и все. Зачем менять работоспособный код на не пойми что, только бы что-нибудь поменять? Я понимаю, если бы ты алгоритм сменил. А бесполезные, тем более неправильные, изменения делать незачем.

Добавлено @ 19:18 
А также строчку
Код

void CreateArrays(const int array[], int an, int b[], int bn, int c[], int cn)

Замени на
Код

void Split1(const int array[], int an, int b[], int bn, int c[], int cn)
 

Автор: b44 21.5.2006, 20:26
Спасибо Sim7! буду ДОЛЖЕН!!! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)