Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Задача для гуру СИ
цитата
28/02/10 в 20:07
 _s_[sov]
Ребят, помогите плиз написать на Си вот такое:

Дан одномерный массив, нужно
Цитата:
Поменять местами отрицательные элементы массива с положительными. Замену остановить, если «+»-е или «-»-е элементы закончатся. Оставшиеся элементы свое место не изменяют.


Нужно помочь одной знакомой девушке. Ну кто в теме это ж просто icon_smile.gif

Семок отсыплю по максимуму. В гугл не слать, читать маны тоже.
цитата
01/03/10 в 19:48
 freeek
я не гуру С/С++ и тем более сильно тороплюсь

где вот такой бред smail101.gif на ANSI C, архитектура гавно, пусть ловит саму идею и правит как надо

среда VS 9.0, консольное приложение win32

Код:
#include <stdio.h>
#include <tchar.h>

#define count(arr)  (sizeof(arr) / sizeof(arr[0]))  //count array elements
#define giveArr(arr) arr, count(arr)                //get array pointer and size

const int aSize = 10;

void fillArray(int*, int*, int, char);
void echoArray(int*, int);
void initArray(int*, int);
void reSortArray(int*, int*, int*);

void _tmain(int argc, _TCHAR* argv[])
{
   int positive[aSize], negative[aSize], myArray[aSize] = {10,-2,3,-5,-6,8,-4,5,-5,-62};

   initArray(giveArr(positive));
   initArray(giveArr(negative));

   fillArray(myArray, positive, aSize, 'p');
   fillArray(myArray, negative, aSize, 'n');

   printf("\r\n--------before resorting--------\r\n");
   echoArray(giveArr(myArray));


   reSortArray(myArray, positive, negative);


   printf("\r\n--------after rsorting----------\r\n");
   echoArray(giveArr(myArray));

   getchar();  //press enter to exit
}

void fillArray(int* baseArray, int* subArray, int size, char flag)
{   
   if('p' == flag){
      while(0 < size--){
         if(*baseArray > 0)
         {
            *subArray = *baseArray;
            ++subArray;
         }         
         ++baseArray;
      }
   }
   else{
      while(0 < size--){
         if(*baseArray < 0)
         {
            *subArray = *baseArray;
            ++subArray;
         }
         ++baseArray;
      }
   }
}

void echoArray(int* _array, int size)
{
   printf("\r\n");
   while(0 < size--){
      printf("%d\r\n", *_array++);
   }   
}

void initArray(int* _array, int size)
{
   while(0 < size--){
      *_array++ = 0;
   }   
}

void reSortArray(int* baseArray, int* positive, int* negative)
{
   int p = 0, n = 0;

   for(int i = 0; (i < aSize); i++)
   { 
      if((*(baseArray + i) < 0) && ((*(positive + p)) != 0)){
         *(baseArray + i) = *(positive + p);
         ++p;
      }else
         if((*(baseArray + i) > 0) && ((*(negative + n)) != 0)){
            *(baseArray + i) = *(negative + n);
            ++n;         
         }
   }
}

цитата
01/03/10 в 19:50
 _s_[sov]
а хз актуально ли это еще, но +8 поставил icon_smile.gif


Эта страница в полной версии