Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
D01phiN
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
#1

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

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

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

сканирование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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2012, 00:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Цикл: вычислить значение выражения по заданной формуле (C++):

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

Вычислить значение выражения по заданной формуле - C++
Задана последовательность N вещественных чисел. Вычислить значение выражения \sqrt{|{x}_{1}*{x}_{2}...{x}_{N}|} Очень прошу сделать...

Цикл: Вычислить выражение по заданной формуле - C++
Алгоритм решения каждой задачи реализовать всеми типами циклических операторов (если это возможно): do, for, while) БЕЗ ИСПОЛЬЗОВАНИЯ...

Найти значение выражения по заданной формуле - C++
подскажите как написать, особенно z1

Цикл: Вычислить и вывести на печать сумму по заданной формуле - C++
Помогите пожалуйста не понимаю вообще как записать эту формулу в виде функции.

Найти значение выражения по заданной формуле (подскажите с решением) - C++
Здание достаточно простое, но я не уверен. Надо найти F=(i=10∑100)(j=5∑50)cos(i-j). Тут просто надо сделать два цикла по i и j? Ну типа ...

14
(SkyNet)
22 / 40 / 6
Регистрация: 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
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
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
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
04.05.2012, 04:10 #4
Не вижу никаких ошибок, если у вас где чего и расходится с правильным ответом, то скорее всего потому что вы выбрали float для хранения чисел с плавающей запятой, который имеет не самую высокую точность. Попробуйте написать double s = 0; в строчке 8
1
D01phiN
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
04.05.2012, 08:58  [ТС] #5
всем спасибо за то что помогли
Но у меня остался один маленький вопрос. Почему результат пишется 3 раза, когда я нажимаю ctrl+f9?
0
amfisat
67 / 67 / 1
Регистрация: 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
D01phiN
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
04.05.2012, 11:05  [ТС] #7
ой блииин....всё понял... я ещё не проснулся просто

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

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

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

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

Добавлено через 1 час 10 минут
помогите кто-нибудь
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
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
D01phiN
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
04.05.2012, 11:41  [ТС] #9
ForEveR, мы #include <malloc.h> не проходили)
erase_spaces - такого тоже не было(
но всё равно спасибо
кто-нибудь умеет писать на более просто языке? чтобы вот как в прошлой задаче. всё также было просто и понятно.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
04.05.2012, 11:48 #10
D01phiN, malloc - динамическое выделение памяти.
erase_spaces - функция, которую я написал. Или написание функций вы тоже не проходили? оО
1
D01phiN
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
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
04.05.2012, 12:42 #12
D01phiN, Судя по вашим знаниям - вторая.
1
D01phiN
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
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
04.05.2012, 12:50 #14
D01phiN, Можно не значит нужно.
1
D01phiN
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2012, 14:02
Привет! Вот еще темы с ответами:

Найти значение тригонометрического выражения по заданной формуле (скорректировать код) - C++
Добрый день, прошу помочь скорректировать код, дело в том что при каждом запуске программа по разному себя ведет, то выдает рандомные...

Вычислить значение по заданной формуле - C++
Создать программу для вычисления значения функции. При x = 0,4*{10}^{4} y = -0.875 z = -0.475*{10}^{-3} w=1.9873

Вычислить значение по заданной формуле - C++
y=({e}^{sin2x}+{x}^{3}+ln\frac{14}{x})/\frac{\sqrt{2\pi+sin2x}}{12{x}^{3}} x=1.83

Вычислить значение по заданной формуле - C++
Помогите решить пример.


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
04.05.2012, 14:02
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru