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

Замена элементов массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.75
Seniorus
2 / 2 / 0
Регистрация: 08.11.2011
Сообщений: 10
18.11.2011, 21:03     Замена элементов массива #1
Помогите, пожалуйста, дописать код.
Заменить все элементы с отрицательным значением на значение минимального не равного 0 положительного элемента. Диапазон значений элементов (-100; +100).

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 "stdafx.h"
#include "stdafx.h"
#include <iostream>
#include "conio.h"
#include <time.h>
#include <stdlib.h>
#include "windows.h"
 
using namespace std;
 
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    srand (time(NULL));     // Каждый раз по-разному
 
    int size;
    int *Ar;                // Начало массива
    int *Cr, *Ir;           // Текущие указатели
    int av, nn;             // Минимальное не равное 0 значение и количество элементов в последовательности
    rand();                 // Ф-ция случ.
    size=rand() % 20 + 10;
    printf("Случайный размер: %d\n",size);          
    Ar=(int*) malloc(size * sizeof(int));   // Выделения памяти
    printf("Начальный массив:\n");  // Заполнение массива случайными числами и вывод начального массива
    
    for (Cr=Ar; Cr<Ar+size; Cr++)
    {
        *Cr=rand() % 201 + (-100);
        printf("%3d ",*Cr);
    }
    putchar('\n');
    _getch();
}
Добавлено через 4 часа 58 минут
С указателями не дружу. Спасайте!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mc.Duck
Заблокирован
18.11.2011, 21:15     Замена элементов массива #2
Seniorus, как я понял, заменить отрицательные элементы массива на минимальный элемент массива, который больше 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
32
33
#include <iostream>
#include <cstdlib>
#include <clocale>
using namespace std;
 
const int n=10;
 
 int main(void)
 {
  int mass[n];
  for(int i=0;i<n;i++)
  {
  mass[i]=rand() % 200-100; 
}
  setlocale(LC_ALL,"Russian");
 
  for(int j=0;j<n;j++)
  cout<<mass[j]<<"   ";
  
  int min=100;
  
    for(int j=0;j<n;j++)
  if(mass[j]>0 && mass[j]<min) min=mass[j];
cout<<endl;cout<<endl;
cout<<"ГЊГЁГ*ГЁГ¬Г*ëüГ*ûé ýëåèåГ*ГІ Г¬Г*Г±Г±ГЁГўГ*: "<<min<<endl;
    for(int j=0;j<n;j++)
  if(mass[j]<0) mass[j]=min;
cout<<endl;cout<<endl;
  for(int j=0;j<n;j++)
  cout<<mass[j]<<"   ";
 
cin.get();
 }
Seniorus
2 / 2 / 0
Регистрация: 08.11.2011
Сообщений: 10
18.11.2011, 21:23  [ТС]     Замена элементов массива #3
Цитата Сообщение от mc.Duck Посмотреть сообщение
Seniorus, как я понял, заменить отрицательные элементы массива на минимальный элемент массива, который больше 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
32
33
#include <iostream>
#include <cstdlib>
#include <clocale>
using namespace std;
 
const int n=10;
 
 int main(void)
 {
  int mass[n];
  for(int i=0;i<n;i++)
  {
  mass[i]=rand() % 200-100; 
}
  setlocale(LC_ALL,"Russian");
 
  for(int j=0;j<n;j++)
  cout<<mass[j]<<"   ";
  
  int min=100;
  
    for(int j=0;j<n;j++)
  if(mass[j]>0 && mass[j]<min) min=mass[j];
cout<<endl;cout<<endl;
cout<<"ГЊГЁГ*ГЁГ¬Г*ëüГ*ûé ýëåèåГ*ГІ Г¬Г*Г±Г±ГЁГўГ*: "<<min<<endl;
    for(int j=0;j<n;j++)
  if(mass[j]<0) mass[j]=min;
cout<<endl;cout<<endl;
  for(int j=0;j<n;j++)
  cout<<mass[j]<<"   ";
 
cin.get();
 }
Проблема в том и заключается, что нужно находить минимальный элемент > 0 и указывать не сам элемент, а указатель на него. Но все равно спасибо.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
18.11.2011, 21:37     Замена элементов массива #4
Цитата Сообщение от Seniorus Посмотреть сообщение
а указатель на него
указатель на любой элемент
C
1
2
int elem;
int *ptr=&elem; // Указатель на elem
Seniorus
2 / 2 / 0
Регистрация: 08.11.2011
Сообщений: 10
18.11.2011, 21:46  [ТС]     Замена элементов массива #5
Цитата Сообщение от go Посмотреть сообщение
указатель на любой элемент
C
1
2
int elem;
int *ptr=&elem; // Указатель на elem
Да, спасибо. Я затупил немного.
Yandex
Объявления
18.11.2011, 21:46     Замена элементов массива
Ответ Создать тему
Опции темы

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