0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
1

Цикл: вычислить значение выражения по заданной формуле

04.05.2012, 00:42. Показов 2083. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу, в которой используется три вида операторов цикла для вычисления:

сканирование0006.pdf

вот она...помогите кто-нибудь... у меня ответ выдаёт немного неправильный
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main ()
{
int i=0, n;
float s=0;
clrscr ();
printf ("vvedite n:");
scanf ("%d",&n);
if (n<0)
{
puts ("Oshibka vvoda");
getch ();
return;
}
while (i<=n)
{
s+=(1+sqrt(i))/(i+1);
i++;
}
printf ("Summa=%.2f\n",s);
i=0,s=0;
do
{
s+=(1+sqrt(i))/(i+1);
i++;
while (n>=i);
printf ("Summa=%.2f\n",s);
for (i=0, s=0; i<=n; i++);
s+=(1+sqrt(i))/(i+1);
printf ("Summa=%.2f\n",s);
puts ("Dlia zavershenia nazhmite lubuiu klavishu");
getch();
return;
}
N вводится с клавиатуры. Результат (число с плавающей запятой) выводится на экран после каждого цикла.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2012, 00:42
Ответы с готовыми решениями:

Вычислить значение выражения по заданной формуле

Вычислить значение выражения по заданной формуле
Задана последовательность N вещественных чисел. Вычислить значение выражения...

Цикл: Вычислить выражение по заданной формуле
Алгоритм решения каждой задачи реализовать всеми типами циклических операторов (если это возможно):...

Цикл: Вычислить сумму по заданной формуле.
Помогите пожалуйста! Дано натуральное число N. Вычислить:

14
35 / 40 / 15
Регистрация: 25.10.2011
Сообщений: 175
04.05.2012, 01:39 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
 #include <conio.h>
 #include <math.h>
void main ()
 {
 int i=0, n;
 float s=0;
 clrscr ();
 printf ("vvedite n:");
 scanf ("%d",&n);
 if (n<0)
 {
 puts ("Oshibka vvoda");
 getch ();
 return;
 }
 while (i<=n)
 {
 s+=(1+sqrt(i))/(i+1);
 i++;
 }
 printf ("Summa=%.2f\n",s);
 i=0,s=0;
 do
 {
 s+=(1+sqrt(i))/(i+1);
 i++;
 }
 while (n>=i);
 printf ("Summa=%.2f\n",s);
 
 for (i=0, s=0; i<=n; i++)
 s+=(1+sqrt(i))/(i+1);
 
 printf ("Summa=%.2f\n",s);
 puts ("Dlia zavershenia nazhmite lubuiu klavishu");
 getch();
 return;
 }
Добавлено через 1 минуту
после цикла for точка с запетой не ставитса (строка 33), строка 29 не было скобки
1
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
04.05.2012, 01:40 3
Оформляйте, пожалуйста, код в теги.
1 цикл
C++
1
2
3
4
double sum = 0;
 
for ( int i = 0; i <= N; i++ )
   sum += ( 1 + std::sqrt( static_cast< double >( i ))) / ( i + 1 );
2 цикл
C++
1
2
3
4
5
6
7
int i = 0;
double sum = 0;
 
while ( i <= N ) {
   sum += ( 1 + std::sqrt( static_cast< double >( i ))) / ( i + 1 );
   i++;
}
3 цикл
C++
1
2
3
4
5
6
7
int i = 0;
double sum = 0;
 
do {
   sum += ( 1 + std::sqrt( static_cast< double >( i ))) / ( i + 1 );
   i++;
} while ( i <= N );
Приведение типа тут в принципе не нужно, static_cast можно убрать.
1
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
04.05.2012, 04:10 4
Не вижу никаких ошибок, если у вас где чего и расходится с правильным ответом, то скорее всего потому что вы выбрали float для хранения чисел с плавающей запятой, который имеет не самую высокую точность. Попробуйте написать double s = 0; в строчке 8
1
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
04.05.2012, 08:58  [ТС] 5
всем спасибо за то что помогли
Но у меня остался один маленький вопрос. Почему результат пишется 3 раза, когда я нажимаю ctrl+f9?
0
70 / 70 / 36
Регистрация: 16.06.2009
Сообщений: 240
04.05.2012, 09:19 6
Потому что в коде она выводится на печать 3 раза:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while (i<=n)
 {
 s+=(1+sqrt(i))/(i+1);
 i++;
 }
 printf ("Summa=%.2f\n",s); //раз
 i=0,s=0;
 do
 {
 s+=(1+sqrt(i))/(i+1);
 i++;
 }
 while (n>=i);
 printf ("Summa=%.2f\n",s); //два
 
 for (i=0, s=0; i<=n; i++)
 s+=(1+sqrt(i))/(i+1);
 
 printf ("Summa=%.2f\n",s); // три!
1
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
04.05.2012, 11:05  [ТС] 7
ой блииин....всё понял... я ещё не проснулся просто

Добавлено через 6 минут
кто может помочь с ещё одной задачей? у меня есть варианты, но они не подходят, т.к. то что у меня написано мы не проходим. (мне эти варианты написали тоже на форуме).
Мне нужно чтобы я оперировал вот с такими простыми функциями как в этой задаче.

Лабораторная работа №7 (Тема "Нестандартные функции)
Написать и протестировать функцию, которая "сжимает" строку, удаляя из неё все пробелы. Символьная строка вводится с клавиатуры. В программе можно использовать стандартную функцию strlen (имя строки) из <string.h> , которая возвращает значение длины строки (количество символов в строке без нулевого байта)

Добавлено через 3 минуты
я на этой задаче надолго засел. потому что преподавателю не нравится, что я пишу на очень сложном для нас языке. Она говорит что нужно писать только так, как она нас учила. А учила она нас простому программированию. Я знаю как важен этот язык и что на нём написано очень много программ , игр и т.д. Но сейчас играет в моей жизни большую роль время. Нужно сдать эту лабораторную, чтобы закрыть долг. Без вашей помощи никак.

Добавлено через 20 минут
я даже представления не имею как её решить.... с чего начинать знаю смысл вроде тоже более менее понятен, потому что уже долго над ней сижу... 2 месяца если быть точным... но нужно идиотско простое решение как в предыдущей задаче, чтобы преподавателя всё устроило. и мне поставят в зачётке зачёт. и на этом мой курс программирование на с++ закончен.

Добавлено через 1 час 10 минут
помогите кто-нибудь
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
04.05.2012, 11:30 8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <string.h>
#include <malloc.h>
 
char* erase_spaces(const char* string)
{
   char* result = malloc(sizeof(char) * (strlen(string) + 1));
   int i = 0, j = 0;
   for (; i < strlen(string); ++i)
   {
      if (string[i] == ' ') continue;
      result[j] = string[i];
      ++j;
   }
   return result;
}
 
int main()
{
   const char* string = "hello and what is it";
   char* result = erase_spaces(string);
   printf("%s\n", result);
   free(result);
}
1
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
04.05.2012, 11:41  [ТС] 9
ForEveR, мы #include <malloc.h> не проходили)
erase_spaces - такого тоже не было(
но всё равно спасибо
кто-нибудь умеет писать на более просто языке? чтобы вот как в прошлой задаче. всё также было просто и понятно.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
04.05.2012, 11:48 10
D01phiN, malloc - динамическое выделение памяти.
erase_spaces - функция, которую я написал. Или написание функций вы тоже не проходили? оО
1
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
04.05.2012, 12:41  [ТС] 11
malloc нужно заменить на что-то...
вот последняя тема у нас.
Нестандартные функции.
Сейчас залью фото лекции.

Добавлено через 5 минут
http://zalil.ru/33180474

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream.h>
 
char *removeSpc(char * str)
{
   for (int i = 0; str[i] != '\0'; i++)
   {
      if (str[i] == ' ')
      {
         for (int j = i; str[j] != '\0'; j++)
            str[j] = str[j+1];
         i--;
      }
   }
   return str;
}
 
int main(int argc, char* argv[])
{
   char s[255];
 
   cout << "Enter the string: ";
   cin.getline(s,255);
   cout << removeSpc(s) << endl;
 
   system("pause");
   return 0;
}
Добавлено через 38 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
 
char* remove_spaces(char* s)
{
    int i = 0, j = 0;
 
    while(s[i] != '\0')
    {
        if(s[i] != ' ')
        {
            s[j] = s[i];
            ++j;
        }
 
        ++i;
    }
 
    s[j] = '\0';
 
    return s;
}
 
int main(void)
{
    char str[256] = "";
 
    printf("string: ");
    scanf("%255[^\n]", str);
 
    remove_spaces(str);
    printf("result: %s\n", str);
 
    return 0;
}
Добавлено через 2 минуты
а эту мне мужик в delphi c++ написал
но....нужно хоть как-то их максимально упростить...или тыкните пальцем на максимально простую...пойду попробую защититься в 15:00 по МСК.

Добавлено через 42 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "..\include\stdio.h"
 
char* removeSpc(char* str) {
  for (int i=0; str[i]!='\0'; i++) {
    if (str[i]==' ') {
      for (int j=i; str[j]!='\0'; j++) str[j]=str[j+1];
      i--;
    }
  }
  return str;
}
 
int main(int argc, char* argv[]) {
  char s[255];
  
  printf("Vvedite stroku: ");
  scanf("%[^\n]", s);
  printf(removeSpc(s));
  return 0;
}
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
04.05.2012, 12:42 12
D01phiN, Судя по вашим знаниям - вторая.
1
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
04.05.2012, 12:49  [ТС] 13
есть ещё один вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//---------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <iostream.h>
//---------------------------------------------------------------------------
void delete_pr(char *s)
{ unsigned int i,k,j,len;
  len=strlen(s);
  i=0;
  while (i<=len)
  { k=i;
    while (k<len)
      {
        if (s[k]==' ')
          {
            for (j = k; j < len-1; j++)
              {
                s[j]=s[j+1];
               }
            s[len-1]=0;
            len--;
            k--;
           }
        k++;
       }
    i++;
  }
}
 
void main()
{
 char s[150];
 gets(s);
 delete_pr(s);
 cout <<s;
 getch();
}
Добавлено через 38 секунд
и последняя
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <string.h>
#include <iostream.h>
void compress(char*text);
const int strsize=30;
main()
{
char text[strsize]="some text with spaces";
compress(text);
std::cout<<text<<std::endl;
return 0;
}
void compress (char*text)
{
char*buf=new char[30];
int size=strlen(text), a=0, b=0;
for (a=0; a <size; a++)
{
if (text[a]==' ')
continue;
else {
buf[b]=text[a];
b++;}
}
strcpy (text,buf);
delete [] buf;
return;
}
Добавлено через 21 секунду
ForEveR, да...знаний вообще никаких... всего 6 пар было

Добавлено через 1 минуту
и что за эти 6 пар можно выучить? я бы сам сел изучать С++, но я инженер-электрик и мне нет смысла углублённо вникать в этот предмет. да я бы и рад был бы сесть почитать. позаниматься и сделать сам. но у меня курсовики и расчётно графические работы. так что вот так.

Добавлено через 34 секунды
ForEveR, вторая какая?

Добавлено через 1 минуту
вот эта?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
 
char* remove_spaces(char* s)
{
    int i = 0, j = 0;
 
    while(s[i] != '\0')
    {
        if(s[i] != ' ')
        {
            s[j] = s[i];
            ++j;
        }
 
        ++i;
    }
 
    s[j] = '\0';
 
    return s;
}
 
int main(void)
{
    char str[256] = "";
 
    printf("string: ");
    scanf("%255[^\n]", str);
 
    remove_spaces(str);
    printf("result: %s\n", str);
 
    return 0;
}
Добавлено через 1 минуту
Написать и протестировать функцию, которая "сжимает" строку, удаляя из неё все пробелы. Символьная строка вводится с клавиатуры. В программе можно использовать стандартную функцию strlen (имя строки) из <string.h> , которая возвращает значение длины строки (количество символов в строке без нулевого байта)

а тут как я вижу нет не strlen, не <string.h>
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
04.05.2012, 12:50 14
D01phiN, Можно не значит нужно.
1
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
04.05.2012, 14:02  [ТС] 15
ForEveR, ну да, ты прав)))

Добавлено через 10 минут
ForEveR, со второй задачей где-то косячок( она выводит результат не сразу..приходится повторно нажимат ктрл+ф9 чтобы увидеть результат

Добавлено через 12 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
 
char* remove_spaces(char* s)
{
    int i = 0, j = 0;
 
    while(s[i] != '\0')
    {
        if(s[i] != ' ')
        {
            s[j] = s[i];
            ++j;
        }
 
        ++i;
    }
 
    s[j] = '\0';
 
    return s;
}
 
int main(void)
{
    char str[256] = "";
 
    printf("string: ");
    scanf("%255[^\n]", str);
 
    remove_spaces(str);
    printf("result: %s\n", str);
 
    return 0;
}
Добавлено через 1 минуту
что-то в этой задаче не так...строки убирает, но приходится два раза нажимать ctrl+f9. первый раз чтобы набрать строку. второй раз, чтобы увидеть результат.

Добавлено через 20 секунд
скорей бы этот дурдом закончился

Добавлено через 14 минут
Help world

Добавлено через 32 минуты
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2012, 14:02
Помогаю со студенческими работами здесь

Вычислить значение выражения по заданной формуле
y=1+x+x^2!+..+x^N+N! ___________________________ В чём ошибка и как добавить код, изменить?...

Вычислить значение выражения по заданной формуле
F(x)={█(x^2-3x+9@1/(x^3+6))} если x ≤3 и если �� &gt;3

Вычислить значение выражения по заданной формуле
Помогите пожалуйста решить уравнение y=\begin{cases}\frac{\sqrt{1+x^2}}{\sin x} &amp; \text{, if }...

Вычислить значение выражения по заданной формуле
Написать программу: Даны целое число n, действительные числа i,j,k вычислить: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru