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

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

Войти
Регистрация
Восстановить пароль
 
Ruslan777
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 11
#1

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

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

Доброе время суток...собственно вопрос таков:Даны два массива 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++
Массивы: элементы массива с четными номерами, предшествующие первому максимальному элементу, умножить... C++
C++ Сожмите одномерный массив, удалив предшествующие максимальному элементу
C++ В массивах А(10) и В(10) все элементы, предшествующие первому нулевому элементу, заменить на 0,5
Найти среднее арифметическое отрицательных элементов массива, предшествующих первому положительному элементу; проверить, упорядочены ли элементы по во C++
Найти количество элементов последовательности, кратных ее первому элементу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12890 / 7276 / 811
Регистрация: 27.09.2012
Сообщений: 17,975
Записей в блоге: 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
Ворчун
Эксперт CЭксперт С++
6676 / 3857 / 511
Регистрация: 29.11.2010
Сообщений: 10,217
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
359 / 206 / 38
Регистрация: 26.12.2012
Сообщений: 689
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
Ворчун
Эксперт CЭксперт С++
6676 / 3857 / 511
Регистрация: 29.11.2010
Сообщений: 10,217
29.04.2013, 16:18     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #5
Genn55, вы не правы. В вашем случае находит индекс последнего нулевого элемента.
Genn55
359 / 206 / 38
Регистрация: 26.12.2012
Сообщений: 689
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
Ворчун
Эксперт CЭксперт С++
6676 / 3857 / 511
Регистрация: 29.11.2010
Сообщений: 10,217
29.04.2013, 20:50     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #7
Genn55, требуется хедер cstddef, хотя само по себе использование soze_t лишь в одном месте довольно странно. Но, в данной задаче не критично, разве что варнинги будут глаз мазолить.
Genn55
359 / 206 / 38
Регистрация: 26.12.2012
Сообщений: 689
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
Ворчун
Эксперт CЭксперт С++
6676 / 3857 / 511
Регистрация: 29.11.2010
Сообщений: 10,217
29.04.2013, 22:34     Функции. массивах A(10) и B(10) все элементы предшествующие первому нулевому элементу заменить на 0,5 #9
Genn55, ну так я и говорю
Цитата Сообщение от MrGluck Посмотреть сообщение
Но, в данной задаче не критично, разве что варнинги будут глаз мазолить.
Genn55
359 / 206 / 38
Регистрация: 26.12.2012
Сообщений: 689
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++
Все элементы массива, предшествующие максимальному, установить равными минимуму (при определенном условии) C++
Первому элементу массива присвоить значение второго C++
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
Ответ Создать тему
Опции темы

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