Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2011, 12:42   #1
Miles
Пользователь
 
Регистрация: 25.10.2011
Сообщений: 25
По умолчанию C массивы и прога со степенью

1) Пусть A и B - положительные вещественные числа, большие 1, причем A>B. Найти такое наименьшее натуральное число m, что B^m> m*A
я написал код:

#include <stdio.h>
#include <conio.h>
#include <math.h>
int main (void)
{int a,b,m;
printf("vvesti a,b\n");
scanf("%d%d",&a,&b);
if (a<=1 && b<=1){ printf("error");
return 0;
}
else
if (a<=b){ printf("error");
return 0;
}
else
for(m=2;(pow(b,m))<(a*m);m++);;
printf("m=%d",m);
getch();
return 0;
}
а препод хочет без pow(b;m) хз как переписать много раз пробовал не получается


2) Удалить из массива А (20) первый отрицательный элемент.
3) Сформировать массив из чисел, лежащих в диапазоне [p, q], не вошедших в заданный целочисленный массив Z(15) (p и q вводятся с клавиатуры, при вводе сделать проверку, что p<q).

с массивами у меня вообще беда(
Miles вне форума Ответить с цитированием
Старый 05.11.2011, 13:39   #2
Tony Parker
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 52
По умолчанию

По задаче 1:

Без pow() можно обойтись, возводя в степень вручную:

Код:
int main (void)
{
   int a,b,m;
   int bm, ma;

   printf("vvesti a, b:");
   scanf("%d %d",&a,&b);
   if (a<=1 && b<=1){ printf("error");
      return 0;
   }
   else
      if (a<=b){ printf("error"); 
         return 0;
      }
   else
   {
      m = 2;
      bm = b*b;
      am = a*m;
      while (bm <= ma)
      {
         bm *= b;
         ma += a;
         m++;
      }
      printf("m=%d",m);
   }

   getch(); 
   return 0;
}
Этот способ эффективнее, т.к. умножать на b и прибавлять a в цикле мы будем всего m раз! В предыдущем варианте мы на каждом шаге цикла for возводили в степень, что медленнее чем домножать один раз на b.
AllSuccess1.ru - каталог полезных курсов.
Tony Parker вне форума Ответить с цитированием
Старый 05.11.2011, 13:43   #3
Tony Parker
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 52
По умолчанию

2) Удалить из массива А (20) первый отрицательный элемент.

Код:
int a[20];
int i;

// Ищем отрицательный
for (i=0; i<20 && a[i] >= 0; i++);
if (i == 20) { printf("Отрицательного элемента нет!\n"); return 1; }

// "Удаляем", сдвигая на его место остальные
for (; i<19; i++) a[i] = a[i+1];
AllSuccess1.ru - каталог полезных курсов.
Tony Parker вне форума Ответить с цитированием
Старый 05.11.2011, 14:48   #4
Miles
Пользователь
 
Регистрация: 25.10.2011
Сообщений: 25
По умолчанию

Tony Parker спасибо
Miles вне форума Ответить с цитированием
Старый 05.11.2011, 18:15   #5
Miles
Пользователь
 
Регистрация: 25.10.2011
Сообщений: 25
По умолчанию

код:
Цитата:
#include<stdio.h>
#include<conio.h>
int main(void)
{double a[20];
int i;
printf("vvedite massiv:");
for(i=0;i<20;i++)
scanf("%d",a[i]);
for(i=0;i<20 && a[i]>=0;i++);
if(i==20) printf("otricat elementov net!\n");
else
for (i; i<19; i++){ a[i] = a[i+1];
}
for(i=0;i<19;i++)
printf(",%d",a[i]);
getch();
return 0;
}
вопрос: почему прога компилируется ошибок нет, но на вводе массива закрывается с ошибкой
в code blocks пишет:Process terminated with status -1073741819 (0 minutes, 4 seconds)
Miles вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как проверить, , является ли натуральное число k степенью 3 rager06 Паскаль, Turbo Pascal, PascalABC.NET 6 21.05.2011 17:50
Код со степенью kotopezzz Помощь студентам 1 22.02.2011 16:43
Задача со степенью Pascal Vkusnjashka Помощь студентам 1 25.10.2009 02:03
Прога для лотереи (массивы) kenostat Помощь студентам 3 03.02.2009 16:44
Последовательность чисел с степенью до N SEREG@ Помощь студентам 4 15.06.2008 22:41