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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
D01phiN
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 21
04.05.2012, 00:42     Цикл: вычислить значение выражения по заданной формуле #1
Написать программу, в которой используется три вида операторов цикла для вычисления:

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

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

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

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

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

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

Цикл: Вычислить выражение по заданной формуле C++
C++ Вычислить значение по заданной формуле
C++ Из элементов матрицы А или вектора Х вычислить скалярное значение по заданной формуле

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

Или воспользуйтесь поиском по форуму:
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 минуты
Yandex
Объявления
04.05.2012, 14:02     Цикл: вычислить значение выражения по заданной формуле
Ответ Создать тему
Опции темы

Текущее время: 03:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru