Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 20.12.2014
Сообщений: 2
1

Задача называется "Морковка")

21.12.2014, 01:29. Показов 1075. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа ругается на строку v = malloc(n*sizeof(double));
Ошибка 1 error C2440: =: невозможно преобразовать "void *" в "double *"
2 IntelliSense: значение типа "void *" нельзя присвоить сущности типа "double *"

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

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#define _USE_MATH_DEFINES
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define INFILE "carrot_in.txt"
#define OUTFILE "carrot_out.txt"
 
static double
volume(double r, double h)
{
    return M_PI * r * r * h / 3.0;
}
 
static void
volumes(int r, int h, int n, double *s)
{
    int i;
 
    if (n <= 0)
        return;
 
    if (0 == h || 0 == r)
    {
        for (i = 0; i < n; ++i)
            s[i] = 0.0;
    }
    else
    {
        s[0] = volume(((double)r) / n, ((double)h) / n);
        for (i = 1; i < n; ++i)
        {
            s[i] = s[0] * (3.0*i*(i + 1) + 1.0);
        }
    }
}
 
int
main(int args, char **argv)
{
    FILE *fin, *fout;
    int i, r, h, n;
    double *v, s;
 
    fin = fopen(INFILE, "rt");
    if (NULL == fin)
    {
        fprintf(stderr, "error: cannot open input file.\n");
        exit(EXIT_FAILURE);
    }
 
    if (3 != fscanf(fin, "%i %i %i", &r, &h, &n))
    {
        fprintf(stderr, "error: cannot incorret arguments.\n");
        fclose(fin);
        exit(EXIT_FAILURE);
    }
 
    fclose(fin);
 
    fout = fopen(OUTFILE, "wt");
    if (NULL == fout)
    {
        fprintf(stderr, "error: cannot open output file.\n");
        exit(EXIT_FAILURE);
    }
 
    if (0 != n)
    {
        v = malloc(n*sizeof(double));
        volumes(r, h, n, v);
 
        for (i = 0, s = 0.0; i < n; ++i)
        {
            fprintf(fout, "%51f\n", v[i]);
            s += v[i];
        }
 
        free(v);
    }
 
    fclose(fout);
 
    exit(EXIT_SUCCESS);
}
Вот условие задачи, на всякий случай:
Морковка имеет форму прямого кругового конуса высоты H и радиусом основания R. Написать программу вычисления объемов частей, на которые делится конус плоскостями, параллельными основанию, и проходящими через точки деления высоты конуса на N равных частей.
Формат входного файла: carrot.in
Входные данные - вещественные числа R, H (1 <= R <= 1000, 1 <= H <= 1000) и целое число N (1 <= N <= 1000).
Формат выходного файла: carrot.out
Результаты - N вещественных чисел - объёмы кусочков, на которые разрезается конус. Объёмы считать и выводить с точностью до пятого знака после десятичной точки.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2014, 01:29
Ответы с готовыми решениями:

Задача называется Идеальный отряд
Ограничение по времени: 1 секунда Ограничение по памяти: 64 мегабайта Как вы помните,...

задача предполагает поиск счастливых билетов. Счастливым называется такой троллейбусный билет, в котором сумма первых тр
нужна помощь

как называется?
привет :) как называется программа которая в Android-е предлагает слова например, &quot;Юпи&quot; тогда он...

Как называется
Как называется эффект, когда в навигационном меню автоматически переключаются разделы при...

3
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
21.12.2014, 02:40 2
Лучший ответ Сообщение было отмечено azat2909 как решение

Решение

Цитата Сообщение от azat2909 Посмотреть сообщение
Программа ругается на строку v = malloc(n*sizeof(double));
Ошибка 1 error C2440: =: невозможно преобразовать "void *" в "double *"
v = (double*)malloc(....
А вообще, раз уж программа в с++ разделе, то new надо бы.
1
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
21.12.2014, 02:41 3
Цитата Сообщение от azat2909 Посмотреть сообщение
Ошибка 1 error C2440: =: невозможно преобразовать "void *" в "double *"
неявное преобразование из void* запрещено
0
0 / 0 / 0
Регистрация: 20.12.2014
Сообщений: 2
21.12.2014, 03:23  [ТС] 4
Velesthau, СПАСИБО!))) ты меня выручил! На душе стало спокойно))
0
21.12.2014, 03:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2014, 03:23
Помогаю со студенческими работами здесь

Как называется?)
Привет всем) Проблема такая, есть куча иконок нужно их собрать в одно изображение и используя это...

Как называется
Как называется это штука?

Почему C# называется C#?
C++ - название вполне логичное. Я это понимаю, как увеличение значения целочисленной переменной c...

Как называется программа
Подскажите, как называется программа, которую использует автор этого видео: Это видео недоступно...

Как называется шрифт?
Подскажите пожалуйста название данного шрифта?

Как это называется?
С. Прата, листинг 8.1 // использование встроенной функции #include &lt;iostream&gt; inline double...


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

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