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

Небольшой вопрос от нуба в C++ - C++

Восстановить пароль Регистрация
 
shev4ik
0 / 0 / 0
Регистрация: 28.10.2009
Сообщений: 19
01.11.2011, 16:26     Небольшой вопрос от нуба в C++ #1
Есть задача: в одномерном массиве найти номер максимального элемента, сосчитать произведение между первым и вторым нулями, и перестроить массив так, чтобы в первой его половине стояли элементы стоявшие в нечетных позициях,а во второй с четными)
Я достиг вот такого решения:
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> 
using namespace std; 
//--------------------------------------------------------------------------- 
 
int main() 
{ 
int n=0; 
cout << "BBeduTe Pa3MeP MaccuBa: "; 
cin >> n; 
int* a = new int[n]; 
int Max, maxn, n1, n2, n3; 
int p=1; 
Max = a[0]; 
maxn=0; 
n1 = 0; 
n2 = n; 
n3 = 0; 
for (int i = 0; i < n; i++){ 
cout<<"BBeduTe "<<i+1<<" ELEMEHT MaccuBa: "; 
cin>>a[i]; 
if(a[i] > Max) Max = a[i], maxn=i+1;  
if(a[i]==0 && n1==0) n1=i+1, n3=n1; 
if(a[i]==0 && n2==n3) n2=i+1; 
if(a[i]!=0 && i<n2-1 && i>n1-1)p=p*a[i]; 
} 
 cout << "\nMax element: " << Max <<", Ero HoMeP: "<<maxn<<"\nIIepBblu HoL:" <<n1<<" BToPou Hol: "<<n2<< endl 
 << "proizvedenie: "<<p<<endl; 
delete[] a; 
return 0; 
}
Остановился на том, что нихрена произведение не считает! Пока это не сделаю, дальше не иду, все по порядку хочется) Дак вот! ПОМОГИТЕ с проивзедением, if(a[i]!=0 && i<n2-1 && i>n1-1)p=p*a[i]; строка.
И если не сложно, то был бы очень благодарен тому, кто сможет поменять элемнты массива по заданию...
P.S. не знаю как включить нумерацию строк в визуал с++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2011, 16:26     Небольшой вопрос от нуба в C++
Посмотрите здесь:

C++ Вопрос от нуба)
Небольшой вопрос про наследование. C++
Вопрос нуба о типе STRING C++
C++ Небольшой вопрос по массивам
небольшой вопрос..... C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
01.11.2011, 16:41     Небольшой вопрос от нуба в C++ #2
вот так можешь найти произведение между двумя первыми нолями
Код
 int *f=a;
 while (*f!=0)
 {
  f++;
  
 }
 int *l=f+1;
 while (*l!=0)
 {
 l++;
 
 }
 int proiz = 0;
 for (int *p=f+1; p<l; p++)
 {
  proiz *= *p;
 }
Добавлено через 2 минуты
четные и нечетные позиции
Код
void OddAndEven(int arr[maxn],int m ){
  int b[100],c[100]; 
  int *ptr;
  ptr=arr;
  for(int i=0;i<m;i++)
  {
    if(i%2==0)
    {
      b[i]=ptr[i];
      cout<<b[i]<<" ";
    }
    
  }
  for(int i=0;i<m;i++)
  {
    if(i%2!=0)
        {
    c[i]=ptr[i];
    cout<<" "<<c[i];
    }
  }
Добавлено через 1 минуту
Это не само решение твоей задачи, но приблизительное. Тебе нужно просто изменить слегка
shev4ik
0 / 0 / 0
Регистрация: 28.10.2009
Сообщений: 19
01.11.2011, 19:29  [ТС]     Небольшой вопрос от нуба в C++ #3
Спасибо! Работает! Выручил!)
shev4ik
0 / 0 / 0
Регистрация: 28.10.2009
Сообщений: 19
08.11.2011, 11:38  [ТС]     Небольшой вопрос от нуба в C++ #4
Вобщем! Произведение нашел, а вот с сортировкой полный капец!!
Разбирался по учебнику Павловская/Щупак, там какой то бред через стеки!
Код с учебника скатал, чтобы хотя бы просто отсортировать по лекции, а он нихрена не работает.
Пожалуйста помогите разобраться в коде:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//--------------------------------------------------------------------------- 
#include <iostream.h> 
#include <math.h> 
//--------------------------------------------------------------------------- 
 
int main() 
{ 
int n=0; 
cout << "BBeduTe Pa3MeP MaccuBa: "; 
cin >> n; 
int* a = new int[n]; 
int Max, maxn, n1, n2, n3, middle, temp; 
int left, right, sp, j; 
int *stackl=new int[n], *stackr=new int [n]; 
Max = a[0]; 
maxn=0; 
cout<<"BBeduTe "<<n<<" ElELEMHTOB MaccuBa 4ePe3 npobel: "; 
for (int i = 0; i < n; i++){ 
cin>>a[i];  
cout<<a[i]<<" "; 
 
//номер максимального 
if(a[i] > Max) Max = a[i], maxn=i+1;  
} 
// произведение между нулями =) 
int *f=a; 
while (*f!=0) 
{ 
 f++; 
} 
int *l=f+1; 
while (*l!=0) 
{ 
l++; 
} 
int proiz = 1; 
for (int *p=f+1; p<l; p++) 
{ 
proiz *= *p; 
 //Сортировка  
sp=i; stackl[i]=0; stackr[i]=n-1; 
while (sp>0){ 
// 
left=stackl[sp]; 
right=stackr[sp]; 
sp--; 
while (left<right){ 
// 
i=left; j=right; 
middle=a[(left+right)/2]; 
while(i<j);{ 
while(a[i]<middle)j++; 
while(middle<a[j])j--; 
if(i<=j){ 
temp=a[i];a[i]=a[j];a[j]=temp; 
i++;j--; 
} 
} 
if(i<right){ 
// 
sp++; 
stackl[sp]=i; 
stackr[sp]=right; 
} 
right=j; 
// 
} 
} 
// 
for (i=0;i<n;i++) cout <<a[i]<< " "<<endl; 
 
} 
 
// Вывод информации по заданию: 
 cout << "\nMax element: " << Max <<", Ero HoMeP: "<<maxn<<endl 
 << "IInpou3BedeHue oT 0 do 0: "<<proiz<<endl; 
 
delete[] a; 
return 0; 
}
В результате запуска программы, после ввода массива программа встает в ступор, и больше не очухивается!
Что за хрень?
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
08.11.2011, 13:21     Небольшой вопрос от нуба в C++ #5
Цитата Сообщение от shev4ik Посмотреть сообщение
Max = a[0];
a[0] еще не присвоено значение, там будет мусор. В данном случае Max=0; лучше
Цитата Сообщение от shev4ik Посмотреть сообщение
if(a[i] > Max) Max = a[i], maxn=i+1;
C++
1
2
3
4
5
if(a[i] > Max)
{
  Max = a[i];
  maxn=i+1;
}
shev4ik
0 / 0 / 0
Регистрация: 28.10.2009
Сообщений: 19
08.11.2011, 14:08  [ТС]     Небольшой вопрос от нуба в C++ #6
Спасибо, не заметил, но с этим проблем не было. Вопрос с сортировкой! Максимум находит, произведение считает! Как делаю сортировку по учебнику программа намертво встает. И нифига не понятно куда в ней столько циклов и какие то стэки) С сортировкой от Busterr не получается(((
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
08.11.2011, 14:34     Небольшой вопрос от нуба в C++ #7
Цитата Сообщение от shev4ik Посмотреть сообщение
while (*f!=0) { f++; }
Кстати, поиск нулей тоже оригинален. Вопрос на засыпку, чему будет равно f и когда закончится цикл, если в случайном массиве нет нулей?
Цитата Сообщение от shev4ik Посмотреть сообщение
int proiz = 1; for (int *p=f+1; p<l; p++) { proiz *= *p;
Вот здесь то как бы и должна стоять завершающая скобка цикла вычисления произведения, а её как бы нет.
Дальше сортировка
Цитата Сообщение от shev4ik Посмотреть сообщение
sp=i; stackl[i]=0; stackr[i]=n-1;
Чему равно i , откуда оно взялось и как вообще это скомпилировалось?

Добавлено через 16 минут
Там вся сортировка то раз плюнуть, понаписали бреда
C++
1
2
3
4
5
6
int* Sorted = new int[n];
int pos=0;
for (int i=1;i<n;i+=2)
 { Sorted[pos]=a[i]; pos++;}
for (int i=0;i<n;i+=2)
 { Sorted[pos]=a[i]; pos++;}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2011, 10:39     Небольшой вопрос от нуба в C++
Еще ссылки по теме:

небольшой вопрос про совмещение строк C++
небольшой вопрос по структурам C++
C++ Небольшой вопрос по заполнению структуры

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

Или воспользуйтесь поиском по форуму:
shev4ik
0 / 0 / 0
Регистрация: 28.10.2009
Сообщений: 19
09.11.2011, 10:39  [ТС]     Небольшой вопрос от нуба в C++ #8
Аааааааааа!! Все работает!! Огромнейшее спасибо дорогой mimicria!! Чтобы я без тебя делал! Супер!

Добавлено через 18 часов 47 минут
Новый вопрос!!)))
Дан массив размером 8х8.
1. Найти сумму элементов в строках, где есть хотя бы один отрицательный элемент.
2. Найти такие k, что k-я строка массива совпадает с k-м столбцом.
До второго пункта пока не добрался, прошу помощи с первым!!!
Код
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
//CeMuHaP 3. DByMepHbIE MaccuBbI.
#include <iostream.h>   
#include <math.h>   
//---------------------------------------------------------------------------   
int main() 
{ 
    int n, m, x, y, s, p, a[8][8]; 
    s=0; 
    p=-1; 
    cout << "ckolko cTolboB = "; cin >> n; 
    cout << "ckolko cTpok = "; cin >> m; 
 
    // BBod MaccuBa 
    for (x = 0; x < m; x++)  
        for (y = 0; y < n; y++) 
        {
            cout << "a[" << x << "][" << y << "] = "; 
            cin >> a[x][y]; 
                                } 
    //BbIBod MaccuBa 
        for (x = 0; x < m; x++) 
        { 
            for (y = 0; y < n; y++) cout<<a[x][y]<<" "; 
            cout<<endl;
        } 
    //CyMMa B cTpoKax c (-) 
    for (x = 0; x < m; x++) 
        { 
        for (y = 0; y < n; y++) 
        if(a[x][y]<0) p=x;
            for (x = 0; x < m; x++) 
            { 
            for (y = 0; y < n; y++)
            if(p==x) s=s+a[x][y];
            } 
        } 
 
    cout<<"CyMMa B cTpoKax c (-) = "<<s<<endl; 
    return 0;
}
Добавлено через 14 минут
Сумму считает почему то не правильно( В чем может быть ошибка?
Yandex
Объявления
09.11.2011, 10:39     Небольшой вопрос от нуба в C++
Ответ Создать тему
Опции темы

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