ovalenceva77
?>

Написать функцию, которая переставляет элементы массива типа int так, что все положительные элементы предшествуют отрицательным. язык си

Информатика

Ответы

tokarevmax
#include <stdio.h>
#include <malloc.h>
void func(int *mas, int N)
{       
int l=0, r=N-1, i;       
while(l<r)       
{               
for(i=l; i<N; i++)                       
if(mas[i]<0)                               
break;               
l=i;               
for(i=r; i>=0; i--)                       
if(mas[i]>=0)                               
break;               
 r=i;               
if(l<r)               
 {                       
 int temp=mas[l];
 mas[l]=mas[r];
mas[r]=temp; 
               }       
 }

int main()
{int *mas, N, i;printf("N= ");scanf("%d", &N);mas=(int*) malloc(N*sizeof(int));for(i=0;
i<N; i++)
{    printf("[%d]= ", i); 
   scanf("%d", &mas[i]);}func(mas, N);for(i=0; i<N; i++)    printf("%d ", mas[i]); 
   return 0;}
Гаевая1290

"...напечатает сначала 2, потом - 6" -- это значит a=2 и b=6?


про пятеричные записи ничего не понял...  :) И ИМХО к чему такие сложности? И для чего нам комп и программа? Я подправил исходную прогу чтобы она выдавала все числа подходящие по условию

var x,a,b: longint;


begin

   for var i := 999 DownTo 100 do begin

       a := 0;

       b := 1;

       x := i;

       while x>0 do begin

           if x mod 2 > 0 then a := a+1 else b := b+(x mod 5);

           x := x div 5;

       end;

       if (a = 2) and (b = 6) then writeln('x = ', i, ' a = ', a, ' b = ',b);

   end;

end.


прога проводит расчет для всх трехзначных чисел от 999 до 100

итого мы видим что максимальное подходящее число это 960

при необходимости прогу можно переделать чтобы она находила только максимальное число.

zolotayaoxana1982

Меньше чем 3-х основание СС быть не может. (Сама догадайся почему ;-)  

 

Делим:  

 

23 : 3 = 7 ост. 2 — подходит  

23 : 4 = 5 ост. 3 — не подходит  

23 : 5 = 4 ост. 3 — не подходит  

23 : 6 = 3 ост. 5 — не подходит  

23 : 7 = 3 ост. 2 — подходит  

23 : 8 = 2 ост. 7 — не подходит  

23 : 9 = 2 ост. 5 — не подходит  

23 : 10 = 2 ост. 3 — не подходит  

23 : 11 = 2 ост. 1 — не подходит  

23 : 12 = 1 ост. 11 — не подходит  

23 : 13 = 1 ост. 10 — не подходит  

23 : 14 = 1 ост. 9 — не подходит  

23 : 15 = 1 ост. 8 — не подходит  

23 : 16 = 1 ост. 7 — не подходит  

23 : 17 = 1 ост. 6 — не подходит  

23 : 18 = 1 ост. 5 — не подходит  

23 : 19 = 1 ост. 4 — не подходит  

23 : 20 = 1 ост. 3 — не подходит  

23 : 21 = 1 ост. 2 — подходит  

23 : 22 = 1 ост. 1 — не подходит  

23 : 23 = 1 ост. 0 — не подходит  

 

Далее для всех СС больше 23 остаток будет 23. Следовательно нет смысла их рассматривать.  

 

Итого: 2, 7 и 21.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Написать функцию, которая переставляет элементы массива типа int так, что все положительные элементы предшествуют отрицательным. язык си
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Lvmadina
matoksana
PopovViktorovna
Yurevich-Vladimirovich
layna1241383
Golubovskayairina
mnn99
Сергеевна-Иван1045
Devaunka40
Тамара_Григорьевна897
oslopovavera
mos197653
denchiklo2299667
Mikhail579
samogon-mozhaisk