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

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

Восстановить пароль Регистрация
 
Ruslan777
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 11
28.04.2013, 12:50     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #1
Доброе время суток...собственно вопрос таков:Даны два массива A(10), B(10). В массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5...Заранее Большое человеческое спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2013, 12:50     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5
Посмотрите здесь:

Массивы: элементы массива с четными номерами, предшествующие первому максимальному элементу, умножить... C++
C++ Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2;
C++ В массивах А(10) и В(10) все элементы, предшествующие первому нулевому элементу, заменить на 0,5
Найти среднее арифметическое отрицательных элементов массива, предшествующих первому положительному элементу; проверить, упорядочены ли элементы по во C++
C++ Найти сумму и количество положительных элементов, предшествующих первому нулевому элементу массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,914
Записей в блоге: 2
Завершенные тесты: 1
29.04.2013, 01:18     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #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);
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
29.04.2013, 01:29     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #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);
}
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
29.04.2013, 12:51     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #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;
}
или я не прав?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
29.04.2013, 16:18     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #5
Genn55, вы не правы. В вашем случае находит индекс последнего нулевого элемента.
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
29.04.2013, 17:50     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #6
Я имел в виду вот эту строку
C++
1
size_t index=0;
мой компиллятор на нее ругается а так нет
C++
1
int index=0;
а в этой строке моя опечатка не сделал предварительного просмотра
C++
1
//break;
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
29.04.2013, 20:50     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #7
Genn55, требуется хедер cstddef, хотя само по себе использование soze_t лишь в одном месте довольно странно. Но, в данной задаче не критично, разве что варнинги будут глаз мазолить.
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
29.04.2013, 21:48     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #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 ===|
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
29.04.2013, 22:34     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #9
Genn55, ну так я и говорю
Цитата Сообщение от MrGluck Посмотреть сообщение
Но, в данной задаче не критично, разве что варнинги будут глаз мазолить.
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
29.04.2013, 23:04     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #10
Ну и Бог с ней.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2013, 03:47     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5
Еще ссылки по теме:

Все элементы массива, предшествующие минимальному, заменить на их квадраты C++
C++ Массивы: все элементы, кратные 10, заменить 0, все нечетные элементы удвоить, а четные уменьшить в 2 раза
Все элементы массива, предшествующие максимальному, установить равными минимуму (при определенном условии) C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
30.04.2013, 03:47     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5
  #11

Не по теме:

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

Yandex
Объявления
30.04.2013, 03:47     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5
Ответ Создать тему
Опции темы

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