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*
Комментарий*

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

Dmitrievna-Dmitrii980
novocherkutino7
Mikhail579
ulyana-d
ekaterinaorl1998
natalia-shelkovich
Вайнер
АнатольевичМиронова885
Расшифровать шифр эль-гамаля: 18 2 17 4 a=2 x=15 p=23
zuzazuza61
ИвановичБогословский280
oslopovavera
Наталья_Васищев
dilovarnazarov1986
Posadskii-Sergeevna
mir5552