Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 11
1

Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5

28.04.2013, 12:50. Просмотров 749. Ответов 10
Метки нет (Все метки)

Доброе время суток...собственно вопрос таков:Даны два массива A(10), B(10). В массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5...Заранее Большое человеческое спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2013, 12:50
Ответы с готовыми решениями:

В массивах А(10) и В(10) все элементы, предшествующие первому нулевому элементу, заменить на 0,5
Здравствуйте. Не могли бы вы мне помочь? не могу составить программу на функции. Задача. Даны два...

Напечать все элементы массива, предшествующие первому элементу с заданным значением
Дан массив целых чисел. Напечать все элементы, предшествующие первому элементу с заданным...

Массивы: элементы массива с четными номерами, предшествующие первому максимальному элементу, умножить...
Дан массив целых чисел размерности n. Все элементы массива с четными номерами, предшествующие...

Найти сумму и количество положительных элементов, предшествующих первому нулевому элементу массива
. Дан массив А(10). Найти сумму и количество положительных элементов, предшествующих первому...

10
Грамотный. Безпорно.
16618 / 9657 / 1863
Регистрация: 27.09.2012
Сообщений: 23,955
Записей в блоге: 2
29.04.2013, 01:18 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
#include <iostream>
#include <iomanip>
 
void foo(double * arr,const int size){
    size_t index=0;
    for(int i=0;i<size;++i)
        if(arr[i]==0.0){
            index=i;
            break;
        }
    for(int i=0;i<index;++i)
        arr[i]=0.5;
}
 
void print_arr(double * arr,const int size){
    for(int i=0;i<size;++i)
        std::cout<<std::setw(4)<<std::fixed<<std::setprecision(1)<<arr[i];
    std::cout<<std::endl;
}
 
 
int main(){
    const int A_size=10;
    const int B_size=10;
    double A[A_size]={1.8,4.4,5.3,3.7,8.0,0.1,0.0,5.6,4.3,3.9};
    double B[B_size]={2.3,4.4,0.0,3.7,8.0,0.1,0.0,5.6,4.3,3.9};
    std::cout<<"Source:\n";
    print_arr(A,A_size);
    print_arr(B,B_size);
 
    foo(A,A_size);
    foo(B,B_size);
 
    std::cout<<"\nResult:\n";
    print_arr(A,A_size);
    print_arr(B,B_size);
}
0
Форумчанин
Эксперт CЭксперт С++
8157 / 5005 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
29.04.2013, 01:29 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
#include <iostream>
#include <cstddef>
#include <array>
#include <random>
#include <algorithm>
#include <iterator>
 
int main()
{
    const std::size_t N = 10;
    std::array<double, N> A, B;
    std::mt19937 gen { std::random_device()() };
    std::uniform_int_distribution<int> uid(-3, 3);
    auto print_arr = [](const std::array<double, N> &a)
    {
        std::copy(a.begin(), a.end(), std::ostream_iterator<double>(std::cout, " ") );
        std::cout << std::endl;
    };
    std::generate(A.begin(), A.begin() + N, [&uid, &gen] { return uid(gen); } );
    std::generate(B.begin(), B.begin() + N, [&uid, &gen] { return uid(gen); } );
    std::cout << "Before:\n";
    print_arr(A);
    print_arr(B);
    auto itA = std::find(A.begin(), A.begin() + N, 0),
         itB = std::find(B.begin(), B.begin() + N, 0);
    std::fill(A.begin(), itA, 0.5);
    std::fill(B.begin(), itB, 0.5);
    std::cout << "After:\n";
    print_arr(A);
    print_arr(B);
}
0
407 / 245 / 117
Регистрация: 26.12.2012
Сообщений: 786
29.04.2013, 12:51 4
Croessmah в функции
C++
1
2
3
4
5
6
7
8
9
10
void foo(double * arr,const int size){
    size_t index=0;
    for(int i=0;i<size;++i)
        if(arr[i]==0.0){
            index=i;
            break;
        }
    for(int i=0;i<index;++i)
        arr[i]=0.5;
}
все таки правильно будет
C++
1
2
3
4
5
6
7
8
9
10
11
12
void foo(double * arr,const int size)
{
int index=0;
        for(int i=0;i<size;++i)
        if(arr[i]==0)
        {
            index=i;
            //break;
        }
    for(int i=0;i<index;++i)
        arr[i]=0.5;
}
или я не прав?
0
Форумчанин
Эксперт CЭксперт С++
8157 / 5005 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
29.04.2013, 16:18 5
Genn55, вы не правы. В вашем случае находит индекс последнего нулевого элемента.
0
407 / 245 / 117
Регистрация: 26.12.2012
Сообщений: 786
29.04.2013, 17:50 6
Я имел в виду вот эту строку
C++
1
size_t index=0;
мой компиллятор на нее ругается а так нет
C++
1
int index=0;
а в этой строке моя опечатка не сделал предварительного просмотра
C++
1
//break;
0
Форумчанин
Эксперт CЭксперт С++
8157 / 5005 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
29.04.2013, 20:50 7
Genn55, требуется хедер cstddef, хотя само по себе использование soze_t лишь в одном месте довольно странно. Но, в данной задаче не критично, разве что варнинги будут глаз мазолить.
0
407 / 245 / 117
Регистрация: 26.12.2012
Сообщений: 786
29.04.2013, 21:48 8
Подключил.Все равно ругается,а точнее предупреждает
\main.cpp||In function 'void foo(double*, int)':|
\main.cpp|12|warning: comparison between signed and unsigned integer expressions|
||=== Build finished: 0 errors, 1 warnings ===|
0
Форумчанин
Эксперт CЭксперт С++
8157 / 5005 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
29.04.2013, 22:34 9
Genn55, ну так я и говорю
Цитата Сообщение от MrGluck Посмотреть сообщение
Но, в данной задаче не критично, разве что варнинги будут глаз мазолить.
0
407 / 245 / 117
Регистрация: 26.12.2012
Сообщений: 786
29.04.2013, 23:04 10
Ну и Бог с ней.
0
Croessmah
30.04.2013, 03:47     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5
  #11

Не по теме:

Данный код был выдран из контекста несколько другого характера. size_t поменял везде на int. Ну почти везде :D
Лучше поменять на int, т.к. это может оказаться критичным не в студенческой задачке :)

0
30.04.2013, 03:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2013, 03:47
Привет! Вот еще темы с ответами:

В массивах A(10) B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5
Прошу Вас, помогите! Даны два массива A(10), B(10). В массивах A(10)b B(10) все элементы...

Элементы, предшествующие первому нулевому элементу, заменить на 0,5
даны два массива А(10), В(10). в массивах А(10) и В(10) все элементы предшествующие первому...

Напечатать все элементы, предшествующие первому элементу с заданным значением n
1) Дан массив целых чисел: а)Напечатать все элементы, предшествующие первому элементу с заданным...

Все элементы вектора, предшествующие первому наименьшему элементу умножить на 10
Дан вектор A(n). Все элементы вектора, предшествующие первому наименьшему элементу умножить на 10,...


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

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

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