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

Прикладная математическая программа C++ - C++

Восстановить пароль Регистрация
 
Do4ka
 Аватар для Do4ka
1 / 1 / 0
Регистрация: 19.11.2009
Сообщений: 10
22.12.2009, 17:48     Прикладная математическая программа C++ #1
В заданном вещественном массиве A(n) найти все числа, у которых старшая значащая десятичная цифра есть 9 (числа сильно различаются по величине)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2009, 17:48     Прикладная математическая программа C++
Посмотрите здесь:

Математическая задача C++
C++ 1 курс "Прикладная Информатика"
Математическая функция C++
C++ Математическая задача в С++
Математическая формулировка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
22.12.2009, 19:17     Прикладная математическая программа C++ #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
40
41
42
#include <stdio.h>
#include <stdlib.h>
 
#define BUFLEN 128
    
int startFromNine(double n){
    char buf[BUFLEN] = { 0 };
    snprintf(buf, BUFLEN, "%f", n);
    return ( *buf == '9' );
}
 
int main(void){
    double *arr;
    size_t count, i;
    
    printf("\nNumber of elements: ");
    if ( scanf("%d", &count) != 1 ){
        fprintf(stderr, "Can't get array size!\n");
        exit(1);
    }
    if ( count < 1 ){
        fprintf(stderr, "Array can't hold less than 1 element!\n");
        exit(1);
    }
    if ( ( arr = (double*)calloc(count, sizeof(double)) ) == NULL ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    
    printf("\nFill array\n");
    for ( i = 0; i < count; ++i ){
        printf("arr[%d] = ", i);
        scanf("%lf", arr + i);
    }
    printf("\nStarting from 9:\n");
    for ( i = 0; i < count; ++i )
        if ( startFromNine(arr[i]) )
            printf("arr[%d] = %f\n", i, arr[i]);
        
    free(arr);
    exit(0);
}
Do4ka
 Аватар для Do4ka
1 / 1 / 0
Регистрация: 19.11.2009
Сообщений: 10
22.12.2009, 19:23  [ТС]     Прикладная математическая программа C++ #3
а не C ли это?)

мне бы на C++ надо, я тут половину понять не могу...
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.12.2009, 15:49     Прикладная математическая программа C++ #4
Цитата Сообщение от Do4ka Посмотреть сообщение
а не C ли это?)
Ага, С... Я С++ плохо знаю, вот на С и написал, чтоб идею донести... А на С++ как-нибудь так бы выглядело:
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
#include <iostream>
#include <sstream>
#include <string>
#include <iomanip>
    
using namespace std;
 
bool startFromNine(double n){
    ostringstream ost;
    string buf;
    
    ost.precision(12);
    ost << n;
    buf = ost.str();
    return ( buf[0] == '9' );
}
 
int main(){
    double *arr;
    size_t count, i;
    
    cout << "Number of elements: ";
    cin >> count;
    if ( count < 1 ){
        cerr << "Bad value!" << endl;
        return 1;
    }
    arr = new double [ count ];
    for ( i = 0; i < count; ++i ){
        cout << "arr[" << i << "] = ";
        cin >> arr[i];
    }
    
    // весь массив
    cout << "Array:" << endl;
    cout.precision(12);
    for ( i = 0; i < count; ++i )
        cout << "arr[" << i << "] = " << arr[i] << endl;
    cout << endl << "Started from nine:" << endl;
    for ( i = 0; i < count; ++i )
        if ( startFromNine(arr[i]) )
            cout << "arr[" << i << "] = " << arr[i] << endl;
    
    delete [] arr;
    return 0;
}
Добавлено через 15 часов 47 минут
другой вариант функции. main та же
C++
1
2
3
4
5
6
7
8
bool startFromNine(double d){
    int i;
    while ( (int)d > 0 ) {
        i = (int) d % 10;
        d /= 10.0;
    }
    return ( i == 9 );
}
Yandex
Объявления
23.12.2009, 15:49     Прикладная математическая программа C++
Ответ Создать тему
Опции темы

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