Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.51/47: Рейтинг темы: голосов - 47, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 19

Все отрицательные среди данных числа заменить на 0

12.03.2014, 15:57. Показов 11128. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны четыре числа. Все отрицательные среди них числа заменить на 0
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.03.2014, 15:57
Ответы с готовыми решениями:

Найти наибольший элемент среди элементов диагонали и заменить им все отрицательные элементы
в матрице А размерностью 5*5 найти наибольший элемент среди элементов диагонали и заменить им все отрицательные элементы Посчитать...

Заменить все отрицательные числа их модулями
Помогите решить с использованием цикла While Ввести с клавиатуры 10 чисел – положительных и отрицательных. Заменить все...

Ввести с клавиатуры 10 чисел. Если среди них есть числа большие 15, заменить их на 15. Напечатать все полученные числа.
Помогите решить задачу в Turdo C++, там где используется printf scanf: Ввести с клавиатуры 10 чисел. Если среди них есть числа большие...

40
Студент
 Аватар для _include
56 / 56 / 38
Регистрация: 17.09.2012
Сообщений: 292
Записей в блоге: 2
12.03.2014, 18:54
Студворк — интернет-сервис помощи студентам
Прочел я две страницы. То ли туповат, то ли вообще ничего не пойму.
Мой вариант такой:
Не смейтесь, но Grafon, не указал больше данных. Вдруг эти числа в массиве?
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
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 4
 
void main()
{
    int mas[n];
    srand(time(NULL));
    for(int i =0; i < n; i++)
    {
        mas[i]=rand()%10-5;
    }
    for(int i = 0; i < n; i++)
    {
    printf(" %d ",mas[i]);
    }
    printf("\n");
    for(int i = 0; i < n; i++)
    {
        if (mas[i]<0)
        mas[i]=0;
        printf(" %d ",mas[i]);
    }
    
_getch();
}
Поправьте меня, может я вижу только верхушку айсберга?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.03.2014, 19:26

Не по теме:

Цитата Сообщение от Retyrn0 Посмотреть сообщение
привязка к 32-битности же осталась.
а у меня и не было намерения от нее избавляться..



Добавлено через 1 минуту
Цитата Сообщение от _include Посмотреть сообщение
Вдруг эти числа в массиве?
я приводил пример с массивом..
Цитата Сообщение от _include Посмотреть сообщение
Поправьте меня, может я вижу только верхушку айсберга?
нет, просто это решение "в лоб", неинтересно)

Добавлено через 1 минуту

Не по теме:

к тому же, по сути, сишный вариант.. З.Ы. math.h, как минимум, лишнее

1
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
12.03.2014, 19:56
C++
1
2
3
4
5
6
#include <iostream.h>
void main () 
{
    signed int x=-1;
    cout<<x/2<<endl;
}
Мой компьютер с Вами не согласен. По-дурости, видимо, результатом выводит 0)

Добавлено через 5 минут
Цитата Сообщение от KOPOJI Посмотреть сообщение
а у меня и не было намерения от нее избавляться..
Если уж мы решили, что это сложная задаче, то стоит подойти к ней с максимальной серьёзностью) А где жмакнуть, чтобы текст маленьким был?

Добавлено через 57 секунд
Цитата Сообщение от KOPOJI Посмотреть сообщение
это решение "в лоб", неинтересно)
+100500 =)
0
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 12
12.03.2014, 20:46
Ну, я тут попробовал...
Я вообще-то новичок, так что прошу сильно не пинать))
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
//Даны четыре числа. 
//Все отрицательные среди них числа заменить на 0
 
#include<stdio.h>
#include<math.h>
#include<iostream>
 
int main()
 {
          int a, b, c, d;
          printf("vvedite a \n");
          scanf("%d", &a);
          printf("vvedite b \n");
          scanf("%d", &b);
          printf("vvedite c \n");
          scanf("%d", &c);
          printf("vvedite d \n");
          scanf("%d", &d);
          
          if(a<0)
          { a=a*0; printf("a=%d \n",a); }
          else { printf("a=%d \n",a);}
          
          if(b<0)
          { b=b*0; printf("b=%d \n",b); }
          else { printf("b=%d \n",b);}
          
          if(c<0)
          { c=c*0; printf("c=%d \n",c); }
          else { printf("c=%d \n",c);}
          
          if(d<0)
          { d=d*0; printf("d=%d \n",d); }
          else { printf("d=%d \n",d);}
          
          
                   
 system("PAUSE");
 return 0;
 }
вот скрин

пишу на дев, если что)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.03.2014, 21:03
Кликните здесь для просмотра всего текста
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
C++
1
2
#include<math.h>
#include<iostream>
они не нужны. Нужен только stdio и stdlib
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
C
1
a=a*0;
бессмысленное умножение. Проще сразу присвоить ноль
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
C
1
2
3
if(a<0)
* * * * * { a=a*0; printf("a=%d \n",a); }
* * * * * else { printf("a=%d \n",a);}
Дублирование кода. Прямо напрашивается дополнительная функция. К тому же, printf попросту повторяется зазря, else явно лишнее.
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
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int a, b, c, d;
 
    printf("vvedite a \n");
    scanf("%d", &a);
    printf("vvedite b \n");
    scanf("%d", &b);
    printf("vvedite c \n");
    scanf("%d", &c);
    printf("vvedite d \n");
    scanf("%d", &d);
 
 
    if(a<0)
        a=0;
    printf("a=%d \n",a);
 
    if(b<0)
        b=0;
    printf("b=%d \n",b);
 
    if(c<0)
        c=0;
    printf("c=%d \n",c);
 
    if(d<0)
        d=d*0;
    printf("d=%d \n",d);          
 
    system("PAUSE");
    return 0;
}
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 <stdio.h>
#include <stdlib.h>
 
void print_val(int, const char);
 
int main()
{
    int a, b, c, d;
 
    printf("vvedite a \n");
    scanf("%d", &a);
    printf("vvedite b \n");
    scanf("%d", &b);
    printf("vvedite c \n");
    scanf("%d", &c);
    printf("vvedite d \n");
    scanf("%d", &d);
 
    print_val(a, 'a');
    print_val(b, 'b');
    print_val(c, 'c');
    print_val(d, 'd');
 
    system("PAUSE");
    return 0;
}
 
void print_val(int x, const char c)
{
    printf("%c=%d \n", c, (x < 0 ? 0 : x));
}
или вообще все раскидать
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
#include <stdio.h>
#include <stdlib.h>
 
void get_val(int *, const char);
void print_val(int, const char);
 
int main()
{
    int a, b, c, d;
 
    get_val(&a, 'a');
    get_val(&b, 'b');
    get_val(&c, 'c');
    get_val(&d, 'd');
 
    print_val(a, 'a');
    print_val(b, 'b');
    print_val(c, 'c');
    print_val(d, 'd');
 
    system("PAUSE");
    return 0;
}
 
void get_val(int *x, const char c)
{
    printf("vvedite %c \n", c);
    scanf("%d", x);
}
void print_val(int x, const char c)
{
    printf("%c=%d \n", c, (x < 0 ? 0 : x));
}

Цитата Сообщение от Richie_Bolat Посмотреть сообщение
вот скрин
Прикрепляйте изображения к сообщениям
1
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 12
12.03.2014, 21:39
KOPOJI, я прямо выговор получил)) извините, если что))

вот скрин -

Цитата Сообщение от KOPOJI Посмотреть сообщение
бессмысленное умножение. Проще сразу присвоить ноль
ну, я сначала хотел просто присвоить, но потом почему-то подумал, что так будет проще для компилятора))

кстати, я так полагаю задача не так уж проста как кажется и решается по другому?))

вот скрин -
Миниатюры
Все отрицательные среди данных числа заменить на 0  
0
12.03.2014, 21:47

Не по теме:

Цитата Сообщение от Richie_Bolat Посмотреть сообщение
я прямо выговор получил)) извините, если что))
не, это просто небольшая помощь. Я не шибко спец в Си..

решений уйма. Посмотрите предыдущие страницы

0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
12.03.2014, 23:09
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
полагаю задача не так уж проста как кажется
Нет. Задача вполне простая) Просто программисты начинают использовать специфический юмор, Вы поймёте очень скоро, не обижайтесь)
1
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 12
13.03.2014, 19:35
Retyrn0, ок) я не обижаюсь, что Вы? Спасибо за разьяснение) теперь буду знать) ох.. надеюсь, что я быстро привыкну к этой пока что не до конца понятной, но очень интересной среде=)
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
13.03.2014, 21:42
Если серьёзно, то
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
a=a*0;
лучше
C++
1
a=0;
Заставлять процессор умножать, зная, что в результате получим ноль - не комильфо. Лучше тупо приравнять(и даже быстрее). Умножение я использовал чтобы избавиться от
C++
1
if()
Остальные...ну я не знаю зачем они умножали)

Добавлено через 42 секунды
Ну и соответственно b,c,d - то же самое.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
13.03.2014, 21:45
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Остальные...ну я не знаю зачем они умножали)
ну так наверно, за тем же
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
13.03.2014, 21:48
Цитата Сообщение от Retyrn0 Посмотреть сообщение
ну я не знаю зачем они умножали)
для сокращения. Да и интереснее же.. Ну а по факту, результат проверки условия - целое число. Если честно, не знаю, как в плюсах (хотя cout условия выдает тоже число), но в си до последнего стандарта (вроде до последнего) вообще не было логических типов. 0 - ложь, отличные от 0 - истина. Если рассматривать с такой стороны, то добавлять явную проверку if, возможно, и не имеет смысла..
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
13.03.2014, 21:54
Цитата Сообщение от KOPOJI Посмотреть сообщение
Если честно, не знаю, как в плюсах (хотя cout условия выдает тоже число), но в си до последнего стандарта (вроде до последнего) вообще не было логических типов. 0 - ложь, отличные от 0 - истина.
в плюсах появился тип bool который имеет два значения false и true

при приведению к int false=0 true=1
например вот такой код
C++
1
int m= !!k;
запишет в m 0 если k лежит 0
и 1 если в k отличное от нуля число
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
13.03.2014, 21:57
Цитата Сообщение от KOPOJI Посмотреть сообщение
добавлять явную проверку if, возможно, и не имеет смысла
Действительно. Обсуждал тему замены условий и ветвлений в GP GPU - скорее всего там особенно выгодно пользоваться математикой вместо условий - архитектура не очень дружит с ветвлением кода по понятным причинам, а так вроде должен прирост скорости наблюдаться, в сравнении с ветвлениями.
Но достаточно не удобная и не понятная эта математическая подмена для большинства смертных)

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
ну так наверно, за тем же
Я не взялся отвечать за всех, в том числе за ТС, который написал
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
if(a<0)
{ a=a*0;
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
13.03.2014, 22:04
Цитата Сообщение от ValeryS Посмотреть сообщение
в плюсах появился тип bool
да это я знаю, что он появился. В си тоже появился в C99.. Просто как-то не вдавался в подробности того, что именно будет в плюсах в результате условия - булево или же int. Но, к примеру, код
C++
1
std::cout << (1 < 1);
выдает 0, а не false. И, например, в яве или шарпе не получится написать нечто наподобие while(1), только выражения, результатом которых будет true/false или сами эти значения - они требуют четко "только boolean".. C/C++ в этом плане "помягче"

Добавлено через 2 минуты
другое дело - что там "под капотом": boolean или же int..) Проверять лень
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
13.03.2014, 22:09
Цитата Сообщение от KOPOJI Посмотреть сообщение
выдает 0, а не false.
потому что приводится к int
Цитата Сообщение от KOPOJI Посмотреть сообщение
И, например, в яве или шарпе не получится написать нечто наподобие while(1), только выражения, результатом которых будет true/false или сами эти значения - они требуют четко "только boolean".. C/C++ в этом плане "помягче"
видать ужесточили и вот это
Цитата Сообщение от KOPOJI Посмотреть сообщение
x[i] *= x[i] >= 0;
уже не пройдет
Цитата Сообщение от KOPOJI Посмотреть сообщение
C/C++ в этом плане "помягче"
да он просто ближе к "железу"
а у процессора только нолики и единички

Добавлено через 2 минуты
Цитата Сообщение от KOPOJI Посмотреть сообщение
другое дело - что там "под капотом": boolean или же int..) Проверять лень
по размеру тот же int
но компилятор его за int не считает
C++
1
2
3
4
5
bool k=false;
k++;
k++;
k++;
k--; //false
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
13.03.2014, 22:45
Цитата Сообщение от ValeryS Посмотреть сообщение
по размеру тот же int
Разве? А мой компилятор по дурости выделяет всего 1 байт под bool ;-)

Добавлено через 3 минуты
Вообще для двух вариантов true и false хватит и одного бита, но комп. не знает ничего меньше байта - приходиться 7 лишних бит за собой таскать
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
13.03.2014, 23:12
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Разве? А мой компилятор по дурости выделяет всего 1 байт под bool ;-)
теперь смотрим стандарт
[ Note: in particular, sizeof(bool) and sizeof(wchar_t) are implementation-defined.
—end note
sizeof(bool) is not required to be 1.
[Примечание: в частности, SizeOf (BOOL) и SizeOf (wchar_t) зависят от реализации. 74) -Конец примечания
SizeOf (BOOL) не требуется, чтобы быть 1.
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Вообще для двух вариантов true и false хватит и одного бита, но комп. не знает ничего меньше байта
компилятор Keil, тот что работает с микроконтроллерами, спокойно выделяет 1 бит
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
14.03.2014, 01:33
Цитата Сообщение от ValeryS Посмотреть сообщение
что работает с микроконтроллерами
Ну я поэтому и говорил слово "комп.". В моей железяке памяти мнооого и адресовать каждый бит было бы накладно чисто с технической точки зрения ;-)
Цитата Сообщение от ValeryS Посмотреть сообщение
зависят от реализации
Не вижу ни одной причины добавлять ещё по 16 бит к остальным 7 болтающимся за единственным несущим информацию, но раз стандарт так говорит, то ладно. Мне просто повезло с выбором платформы, хотя адресация каждого бита - очень заманчивая штука, мне часто её не хватает. Может на днях разработают железки, которые смогут так делать, а иначе зачем жить =)

Добавлено через 1 минуту
64-битные адреса уже пользуют, может совершат 8-ми кратную детализацию памяти...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
14.03.2014, 07:03
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Не вижу ни одной причины добавлять ещё по 16 бит к остальным 7 болтающимся за единственным несущим информацию,
ну вот тебе одна из них
выравнивание памяти, процессору удобней работать с адресами кратными 2 / 4 чем с каждым байтом

Добавлено через 7 минут
Цитата Сообщение от Retyrn0 Посмотреть сообщение
хотя адресация каждого бита - очень заманчивая штука, мне часто её не хватает.
ну адресация,не адресация, а работать с битами можно, посмотри "битовые поля"
http://www.c-cpp.ru/books/bitovye-polya
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2014, 07:03

Ввести с клавиатуры 10 чисел. Если среди них есть числа, большие 15, заменить их на 15. Напечатать все полученные числа
Ввести с клавиатуры 10 чисел. Если среди них есть числа, большие 15, заменить их на 15. Напечатать все полученные числа.

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

Заменить в одномерном числовом массиве все отрицательные числа на нули
Заменить в одномерном числовом массиве все отрицательные числа на нули. Программа написана на Паскале, помогите, пожалуйста, переделать...

Даны действительные числа. Заменить все отрицательные элементы их квадратами
Я новичок в программировании, помогите. Даны действительные числа А1....,А18. Заменить все отрицательные элементы их квадратами и вывести...

Все отрицательные числа в массиве заменить минимальным значением элемента
Есть массив из n-чисел. Все отрицательные числа в нем заменить минимальным значением элемента этого массива


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru