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

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

Войти
Регистрация
Восстановить пароль
 
SashaPinsk
39 / 37 / 2
Регистрация: 27.12.2009
Сообщений: 73
#1

Командная строка. Безтиповой указатель. - C++

05.01.2010, 23:44. Просмотров 660. Ответов 5
Метки нет (Все метки)

Вот примерная прога которая должна запускаться на борланде. Вопрос в следующем можно ли написать эту ф-цию для среды Visual(проблема заключается в наращивании шага безтипового указателя) Заранее спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//функция для нахождения среднего арифметического чисел типа float.
double arithmetic1(double k,...)
{
    void *p;
    double sum=0;
    p=(double*)&k;
    ((double*)p)+=1;
    for(int i=0; i<k; i++)
    {
        sum+=*(double*)p;
        (double*)p+=1;
    }
    return sum/k;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2010, 23:44     Командная строка. Безтиповой указатель.
Посмотрите здесь:

C++ и командная строка - C++
Как с помощью с++ открыть ком. строку и ввести команды?

Командная строка - C++
Нужно выполнить задание, но как не пойму... Ввести n строк , найти самую короткую и самую длинную строки. Вывести найденные строки и...

Командная строка в С++ - C++
В командной строке задается признак фигуры, объем которой необходимо вычислить: s – шар (аргумент – радиус); k – куб (аргумент –...

Командная строка - C++
В командной строке задается признак фигуры, объем которой необходимо вычислить: s – шар (аргумент – радиус); k – куб (аргумент...

командная строка - C++
помогите написать программку на СИ, буду мегаблагодарна :) В параметрах командной строки передаются строковые значения. Вывести все...

Командная строка - C++
как сделать вывод сообщений на русском языке(англ.) в командной строке? Почему ошибка в объявлении вещественного типа и как запустить прогу...

командная строка - C++
вот такой вопрос: можно ли получить в переменную то, что выводится в командной строке? например, если я выполню...

Командная строка - C++
Почему при запуске скомпилированой программы, вместо русских букв у меня какая то ересь?

Командная строка разработчика - C++
Здравствуйте уважаемые программисты! Объясните пожалуйста простыми словами что значит командная строка разработчика, а именно, не могу...

Командная строка линкера - C++
Вообщем изучаю (пытаюсь изучать) сокеты на MV c++. Из мануала: перейти к закладке &quot;Link&quot; и к списку библиотек, перечисленных в строке...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
05.01.2010, 23:52     Командная строка. Безтиповой указатель. #2
SashaPinsk, а вам не кажется тут много не нужного ? создавать указатель void потом преобразовывать в double потом смещать по памяти..
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
06.01.2010, 15:37     Командная строка. Безтиповой указатель. #3
вот так читает входные данные из командной строки
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 <stdlib.h>
    
double average(double *arr, size_t count){
    double avg = 0.0;
    size_t i;
    
    for ( i = 0; i < count; ++i )
        avg += arr[i];
    
    return avg / (double)count;
}
 
int main(int argc, char** argv){
    size_t i, count;
    double *arr;
    
    if ( argc < 2 ){
        printf("Usage: %s doubleval1 doubleval2 doubleval3...\n", argv[0]);
        exit(0);
    }
    
    count = argc - 1;
    ++argv;
    if ( ( arr = (double*)calloc(count, sizeof(double)) ) == NULL ){
        perror("Bad memory!\n");
        exit(1);
    }
    for ( i = 0; i < count; ++i )
        arr[i] = atof(argv[i]);
    
    printf("Array: ");
    for ( i = 0; i < count; ++i )
        printf("%.1f ", arr[i]);
    printf("\nAverage value: %.1f\n", average(arr, count));
    
    return 0;
}
SashaPinsk
39 / 37 / 2
Регистрация: 27.12.2009
Сообщений: 73
10.01.2010, 10:51  [ТС]     Командная строка. Безтиповой указатель. #4
Большое спасибо за то что уделили время этой проге(кстати вся соль и заключалась в работе с бестиповым указателем). Я её уже решил.
Evg
Эксперт CАвтор FAQ
17470 / 5708 / 363
Регистрация: 30.03.2009
Сообщений: 15,677
Записей в блоге: 26
10.01.2010, 11:18     Командная строка. Безтиповой указатель. #5
Андрейка, он не волшебник, он только учится


SashaPinsk, безтиповые указатели как правило используются только для хранения данных или передачи параметров. Напрямую незачем с ними работать. Т.е.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void *p;
double *dp;
...
/* Где-то сформировал p */
p = 
...
/* Далее этот указатель переписываем в другую переменную
 * нужного типа и работаем без плясок с бубнами */
dp = (double*) p;
for (int i=0; i<k; i++)
{
  sum += *dp;
  dp++;
}
Это по части работы с указателем void*

Что касается выковыривания параметров в процедуре с тремя точками, то у тебя в принципе сделан неправильный код. Для этих целей нужно использовать va_arg, потому как то, что у тебя написано, будет работать только на одной платформе (а иногда ещё и только на одном компиляторе), т.к. схема передачи параметров в процедуры на каждой платформе своя (в том числе параметры могут передаваться и на регистрах)
SashaPinsk
39 / 37 / 2
Регистрация: 27.12.2009
Сообщений: 73
25.01.2010, 13:08  [ТС]     Командная строка. Безтиповой указатель. #6
Цитата Сообщение от Андрейка Посмотреть сообщение
SashaPinsk, а вам не кажется тут много не нужного ? создавать указатель void потом преобразовывать в double потом смещать по памяти..
Такое получил задание поэтому так и делал, а не ради личной забавы. Но я уже её давно написал, но спасибо за интерес.
Yandex
Объявления
25.01.2010, 13:08     Командная строка. Безтиповой указатель.
Ответ Создать тему
Опции темы

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