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

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

Войти
Регистрация
Восстановить пароль
 
 
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
#1

Помогите написать программу в Вorland С31 (для 16-ной СИСТЕМЫ) - C++

05.11.2011, 14:57. Просмотров 787. Ответов 19
Метки нет (Все метки)

Помогите решить эти задачи => http://s51.***********/i134/1111/53/cf71bfc67680.jpg
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2011, 14:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите написать программу в Вorland С31 (для 16-ной СИСТЕМЫ) (C++):

Помогите написать программу в Вorland С31 (для 16-ной СИСТЕМЫ) - C++
Помогите решить эти задачи => http://s51.***********/i134/1111/53/cf71bfc67680.jpg Добавлено через 4 минуты Хотя бы несколько...

Написать программу, выводящую таблицу умножения для n-ной системы счисления (n<=16) - C++
Вот моя программа, выводящая на экран таблицу умножения в 16-ной системе счисления, требуется написать программу для всех систем счисления...

Написать программу для решения системы нелинейных уравнений - C++
Не могу сделать прогу на С++. Кто сделает - огромное спасибо. sin(9x)+cos(7y)-5z*z=10, cos(x)+y-tan(2x)=17, cos(x)+6y-cos(z)=23; ...

Написать программу для решения системы двух уравнений - C++
не знаю как написать программу вводимы и выводимые данные сопровождать краткими поясняющими текстами для проверки численных значений...

Помогите написать программу на C++ для Универа ($ЗАПЛАЧУ!$) - C++
Написать пакет классовдля работы с деловой графикой, предназначенный для работы в среде Windows. Предусмотреть наличие в пакете классы для...

Написать программу для решения системы уравнений методом Гаусса (c++) - C++
Добрый вечер! Нужно написать программу для решения системы уравнений методом Гаусса. Уравнений всего два: a11*x1 + a12*x2 = z1...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.11.2011, 17:28 #2
3.11. Программа читает векторы x, y и выводит их скалярное произведение. Используйте оператор while и простые переменные (без индексов).
Странное задание. Почему нужно использовать while, если переменные без индексов. В голову пришёл только такой вариант с указателями.

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>
 
main() {
        int x[5];
        int y[5];
        int n = 0, xy = 0;
        printf("Enter vectors X, Y: ");
        while (n < 5) {
                scanf("%d", x+n);
                n++;
        }
        n = 0;
        while (n < 5) {
                scanf("%d", y+n);
                n++;
        }
        n = 0;
        while (n < 5) {
                xy += *(x+n) * *(y+n);
                n++;
        }
        
        printf("x * y = %d\n", xy);
}
Задать различные параметры и посмотреть вывод можно здесь.
1
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
05.11.2011, 17:52  [ТС] #3
ну это наш учитель такое задание придумал можешь ещё пару решить плиз мне до понедельника нужно все сдать
p.s. большое спс за решение задачи

Добавлено через 5 минут
а что значит 12 строчка где написано два раза умножить? "* *"
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.11.2011, 18:01 #4
Цитата Сообщение от generation472 Посмотреть сообщение
ну это наш учитель такое задание придумал можешь ещё пару решить плиз мне до понедельника нужно все сдать
p.s. большое спс за решение задачи

Добавлено через 5 минут
а что значит 12 строчка где написано два раза умножить? "* *"
умножение там одно. А вот *(x+n) значит получить хранимое значение по указанному адресу. Аналогично *(y+n).

Строчку *(x+n) * *(y+n) можно записать по-другому как x[n] * y[n]. Так как сказано
(без индексов)
был применен способ через указатели.
0
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
05.11.2011, 18:12  [ТС] #5
а понял это поинтер не сообразил сразу , а зачем тогда вот в этом "xy +" + та же строчка

Добавлено через 3 минуты
и последний вопрос для этой задачи))) почему когда я ввожу векторы получается что я ввожу 11 а не 10 , там же объявлено вроде как 10 переменных а не 11?
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.11.2011, 18:18 #6
Цитата Сообщение от generation472 Посмотреть сообщение
а понял это поинтер не сообразил сразу , а зачем тогда вот в этом "xy +" + та же строчка
сокращенная запись a += b значит a = a + b

В строчке 12 вычисляется скалярное произведение.

Добавлено через 3 минуты
Цитата Сообщение от generation472 Посмотреть сообщение
Добавлено через 3 минуты
и последний вопрос для этой задачи))) почему когда я ввожу векторы получается что я ввожу 11 а не 10 , там же объявлено вроде как 10 переменных а не 11?
В стандартный поток ввода можно уместить 100 чисел и больше (на сколько хватит буфера). А программа считывает только 10 значений.

Это вполне нормально при вводе через пробел.

Пример
ввод:

1 1 1 1 1 2 2 2 2 2 3

вывод:

Enter vectors X, Y: x * y = 10
1
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
05.11.2011, 18:24  [ТС] #7
ясно спс. можешь ещё решить пару?
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.11.2011, 18:28 #8
Цитата Сообщение от generation472 Посмотреть сообщение
ясно спс. можешь ещё решить пару?
Как будет время и желание. Ничего обещать не могу.
0
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
05.11.2011, 18:31  [ТС] #9
да я тебя понимаю спс, если сможешь решить до понедельника выкладываю сюда
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.11.2011, 19:06 #10
Задание 3.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
39
40
41
42
43
#include <stdio.h>
#include <math.h>
 
main() {
        int x[5];
        int n = 0;
        
        while (n < 5) {
                scanf("%d", &x[n]);
                n++;
        }
        
        // среднее арифметическое
        double m = 0;
        n = 0;
        while (n < 5) {
                m += x[n];
                n++;
        }
        m /= n;
        
        // среднее геометрическое
        n = 0;
        double g = 1;
        while (n < 5) {
                g *= x[n];
                n++;
        }
        g = pow(g, 1.0/n);
        
        // квадратическое отклонение
        n = 0;
        double s = 0;
        while (n < 5) {
                s += pow(x[n] - m, 2);
                n++;
        }
        s = sqrt(s/n); // или s = pow(s/n, 1.0/2.0);
        
        printf("1) %f\n", m);
        printf("2) %f\n", g);
        printf("3) %f\n", s);
}
Функции из math.h:
pow -- возведение в степень
sqrt -- квадратный корень
1
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
05.11.2011, 19:19  [ТС] #11
Цитата Сообщение от Xind Посмотреть сообщение
m += x[n]
а можно расписать это как то по другому а то не очень понятно
m += x[n] это равно m=m+x[n] правильно ?
0
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
05.11.2011, 19:46 #12
Вот мой "быдлокод"... )) На 3.14 задачу. Требуется "конвертация" под комп, т.к. проверял только на PSP, не уверен, что будет работать без соответствующей правки с данными, выдаваемыми из под scanf, хотя в задаче не указано, что именно вводится слово не более 70 символов, поэтому это тоже объективное решение.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
char word[9/*Здесь число не более 70, которое равно кол-ву символов массива что после равно -->>*/] = "123456789abcdefg";
    
printf("prefixes...\n");
 
int i, p;
for(i = 1; i < sizeof(word); i++)
{
    printf("prefix N%d: ", i);
    for(p = 0; p < i; p++)
        printf("%c", word[p]);
    printf("\n");
}
    
printf("\nsuffixes...\n");
 
for(i = sizeof(word) - 1; i > 0; i--)
{
    printf("suffix N%d: ", sizeof(word) - i);
    for(p = sizeof(word) - i; p < sizeof(word); p++)
        printf("%c", word[p]);
    printf("\n");
}
Если мне будет не лень, ещё и 3.16 решу.. но завтра.
1
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.11.2011, 19:48 #13
Цитата Сообщение от generation472 Посмотреть сообщение
а можно расписать это как то по другому а то не очень понятно
m += x[n] это равно m=m+x[n] правильно ?
Все верно. Такая запись очень удобна. На таких задачах можно и разворачивать. Но в будущем лучше использовать короткую запись (особенно при работе со структурами).
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
40
41
42
43
#include <stdio.h>
#include <math.h>
 
main() {
        int x[5];
        int n = 0;
        
        while (n < 5) {
                scanf("%d", &x[n]);
                n++;
        }
        
        // среднее арифметическое
        double m = 0;
        n = 0;
        while (n < 5) {
                m = m + x[n];
                n++;
        }
        m = m / n;
        
        // среднее геометрическое
        n = 0;
        double g = 1;
        while (n < 5) {
                g = g * x[n];
                n++;
        }
        g = pow(g, 1.0/n);
        
        // квадратическое отклонение
        n = 0;
        double s = 0;
        while (n < 5) {
                s = s + pow(x[n] - m, 2);
                n++;
        }
        s = sqrt(s/n); // или s = pow(s/n, 1.0/2.0);
        
        printf("1) %f\n", m);
        printf("2) %f\n", g);
        printf("3) %f\n", s);
}
1
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
05.11.2011, 20:09  [ТС] #14
просто я когда буду показывать эти задачи и меня спросит что это значит (а он может спросит так как не показывал нам такой способ) чтобы я мог ответить))) огромное спс всем за помощь

Добавлено через 5 минут
Frostegater спс буду ждать! я не очень понял 2 строчку а именно почему в массиве число 9 и почему он равен "123456789abcdefg"
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.11.2011, 20:17 #15
3.15

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
main() {
        float a, eps = 1E-10; // то же самое, что esp = 0.0000000001
        scanf("%f", &a);
        
        float xi = 1.0, xn;
        do {
                xn = xi;
                xi = 0.5 * (xn + a / xn);
        } while (fabs(xi - xn) > eps);
        
        printf("sqrt(%f) = %f\n", a, xn);
}
запись 1E-10 значит 1 * 10 в степени -10
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2011, 20:17
Привет! Вот еще темы с ответами:

Написать программу для перевода чисел из двоичной системы в десятичную - C++
Написать программу для перевода чисел из двоичной системы в десятичную

Написать программу для решения системы уравнений с пом. матрицы - C++
Добрый день! Очень прошу вашей подсказки в написании моей первой программы для решения системы уравнений с помощью матрицы! Собственно,...

Помогите написать программу для решения слау методом Гаусса - C++
Осталось как обычно пару дней до сдачи курсовой, а она еще не готова! Помогите пожалуйста. Вот код, который чуть-чуть работает Главная...

Перевод числа из 10-ной системы счисления в троичную - C++
прога,которая переводит число из 10 системы в 3-чную.


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

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

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