Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
generation472
19 / 19 / 7
Регистрация: 04.11.2011
Сообщений: 563
Записей в блоге: 1
#1

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

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

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

Помогите написать программу в Вorland С31 (для 16-ной СИСТЕМЫ)
Помогите решить эти задачи =>...

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

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

Написать программу для решения системы нелинейных уравнений
Не могу сделать прогу на С++. Кто сделает - огромное спасибо....

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

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

19
Xind
275 / 148 / 25
Регистрация: 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 / 7
Регистрация: 04.11.2011
Сообщений: 563
Записей в блоге: 1
05.11.2011, 17:52  [ТС] #3
ну это наш учитель такое задание придумал можешь ещё пару решить плиз мне до понедельника нужно все сдать
p.s. большое спс за решение задачи

Добавлено через 5 минут
а что значит 12 строчка где написано два раза умножить? "* *"
0
Xind
275 / 148 / 25
Регистрация: 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 / 7
Регистрация: 04.11.2011
Сообщений: 563
Записей в блоге: 1
05.11.2011, 18:12  [ТС] #5
а понял это поинтер не сообразил сразу , а зачем тогда вот в этом "xy +" + та же строчка

Добавлено через 3 минуты
и последний вопрос для этой задачи))) почему когда я ввожу векторы получается что я ввожу 11 а не 10 , там же объявлено вроде как 10 переменных а не 11?
0
Xind
275 / 148 / 25
Регистрация: 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 / 7
Регистрация: 04.11.2011
Сообщений: 563
Записей в блоге: 1
05.11.2011, 18:24  [ТС] #7
ясно спс. можешь ещё решить пару?
0
Xind
275 / 148 / 25
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.11.2011, 18:28 #8
Цитата Сообщение от generation472 Посмотреть сообщение
ясно спс. можешь ещё решить пару?
Как будет время и желание. Ничего обещать не могу.
0
generation472
19 / 19 / 7
Регистрация: 04.11.2011
Сообщений: 563
Записей в блоге: 1
05.11.2011, 18:31  [ТС] #9
да я тебя понимаю спс, если сможешь решить до понедельника выкладываю сюда
0
Xind
275 / 148 / 25
Регистрация: 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 / 7
Регистрация: 04.11.2011
Сообщений: 563
Записей в блоге: 1
05.11.2011, 19:19  [ТС] #11
Цитата Сообщение от Xind Посмотреть сообщение
m += x[n]
а можно расписать это как то по другому а то не очень понятно
m += x[n] это равно m=m+x[n] правильно ?
0
Frostegater
6 / 6 / 3
Регистрация: 30.08.2011
Сообщений: 48
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 / 25
Регистрация: 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 / 7
Регистрация: 04.11.2011
Сообщений: 563
Записей в блоге: 1
05.11.2011, 20:09  [ТС] #14
просто я когда буду показывать эти задачи и меня спросит что это значит (а он может спросит так как не показывал нам такой способ) чтобы я мог ответить))) огромное спс всем за помощь

Добавлено через 5 минут
Frostegater спс буду ждать! я не очень понял 2 строчку а именно почему в массиве число 9 и почему он равен "123456789abcdefg"
0
Xind
275 / 148 / 25
Регистрация: 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
generation472
19 / 19 / 7
Регистрация: 04.11.2011
Сообщений: 563
Записей в блоге: 1
05.11.2011, 20:21  [ТС] #16
что значит это?
Цитата Сообщение от Xind Посмотреть сообщение
fabs
0
Xind
275 / 148 / 25
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.11.2011, 20:42 #17
Цитата Сообщение от generation472 Посмотреть сообщение
что значит это?
fabs(x) = |x| -- Абсолютная величина или модуль. По заданию |xn+1 -xn|

в заголовке math.h есть просто abs() - он для целочисленных значений, а fabs для чисел с плавающей точкой float
1
generation472
19 / 19 / 7
Регистрация: 04.11.2011
Сообщений: 563
Записей в блоге: 1
05.11.2011, 20:48  [ТС] #18
ясно спс
0
Xind
275 / 148 / 25
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.11.2011, 21:20 #19
3.12
Borlanda у меня нет так что по памяти
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <conio.h>
 
main() {
        int c = 0;
        while (c < 256) {
                printf("%u ", c);
                putch(c);
                putch('\n');
                c++;
        }
}
все дело в функции putch, которая лежит в conio.h из набора Borlanda. Я бы не стал так делать. Лучше воспользоваться из stdio.h функцией putchar()

C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
main() {
        int c = 0;
        while (c < 256) {
                printf("%u ", c);
                putchar(c);
                putchar('\n');
                c++;
        }
}
Проверял, работает, выводит столбик ASCII)))

а ещё лучше сделать все в printf()
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
main() {
        int c = 0;
        while (c < 256) {
                printf("%u %c \n", c, c);
                c++;
        }
}
Пара замечаний: В коде используется тип int для избежания зацикливания в случае применения unsigned char, который принимает от 0 до 255 (проверка while (c < 256) всегда будет проскакивать ), а int больше и безопаснее.

%u - значит преобразовать значение переменной в unsigned char в целочисленном виде
%c - значит выводить в символьном виде

Уф! Все.
0
generation472
19 / 19 / 7
Регистрация: 04.11.2011
Сообщений: 563
Записей в блоге: 1
05.11.2011, 21:38  [ТС] #20
спс тебе огромное сделал доброе дело)))
0
05.11.2011, 21:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2011, 21:38
Привет! Вот еще темы с решениями:

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

Написать программу для решения системы уравнений методом Гаусса (c++)
Добрый вечер! Нужно написать программу для решения системы уравнений методом...

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

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


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

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

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