IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Задача на массивы, C
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 114
Пол: Мужской
Реальное имя: Ден

Репутация: -  0  +


Задание :

Задан упорядоченный по невозрастанию одномерный массив.
-------------------
1) найти произведение отрицательных элементов массива;
2) найти сумму положительных элементов массива;
3) упорядоченный по невозрастанию массив преобразовать в упорядоченный по возраста-нию, оставив по одному в каждой группе совпадающих элементов.


#include <stdio.h>
#include <conio.h>
#include <iostream.h>
void main()
{
const int M=10;
int A[M]={5,4,3,2,2,1,-1,-2,-3,-4};
int P;
P=1;

for (int i=0; i<10; i++)
{ if(A[i]<0)
P=P*A[i];
}
int S=0;
for (i=0;i<10;i++)
{ if(A[i]>0)
S=S+A[i];
}
for (i=0;i<10;i++)
{ cout<<A[i];
}
cout<<"------------------", " Первоначальный массив";
i=1;
while (i<= 10)
{
if (A[i]=A[i-1])
for (int j=i; M-1;i++)
{
A[j]=A[j+1];
--M;
}

else (i++);
}
for (i=0; M%2;i++)
{ int temp;
temp=A[i];
A[i]=A[M-i+1];
A[M-i+1]=temp;
}

for( i=0; i<10; i++)
cout<< A[i];
cout<<"--------------", "Преобразованный массив ";
cout<<" Сумма "<< S;
cout<<" Произведение"<< P;

getche();
}


Подскажите где ошибка ?

1 ) . Вопрос : как заменить в "С" , то что в Паскале можно записать как : M div 2 ?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата(Merlin @ 20.04.2006 17:24)
Подскажите где ошибка ?

Первая - здесь:
if (A[i]=A[i-1])
Ты не сравниваешь элементы, а присваиваешь...

Вторая - здесь:
  const int M=10;
...
--M;
Это с каких пор константу можно изменять? blink.gif


Цитата(Merlin @ 20.04.2006 17:24)
1 ) . Вопрос : как заменить в "С" , то что в Паскале можно записать как : M div 2 ?

Т.к. результат должен присваиваться целочисленной переменной, то простой
что_то = M / 2;

даст тебе деление нацело...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 114
Пол: Мужской
Реальное имя: Ден

Репутация: -  0  +



#include <stdio.h>
#include <conio.h>
#include <iostream.h>
void main()
{
int M=10;
int A[10]={5,4,3,2,2,1,-1,-2,-3,-4};
int P;
P=1;

for (int i=0; i<10; i++)
{ if(A[i]<0)
P=P*A[i];
}
int S=0;
for (i=0;i<10;i++)
{ if(A[i]>0)
S=S+A[i];
}
for (i=0;i<10;i++)
{ cout<<A[i];
}
cout<<" ------ Первоначальный массив"<<endl;
i=1;
while (i<= 10)
{
if (A[i]==A[i-1])
for (int j=i; M-1;i++)
{
A[j]=A[j+1];
--M;
}

else (i++);
}
for (i=0; M/2;i++)
{ int temp;
temp=A[i];
A[i]=A[M-i+1];
A[M-i+1]=temp;
}

for( i=0; i<10; i++)
cout<< A[i];
cout<<" ------ Преобразованный массив "<<endl;
cout<<"\n Сумма S="<< S;
cout<<"\n Произведение P="<< P;

getche();
}



Спасибо, всё правильно.
Вот только сортировка не работает.

Т.е. если массив равен : 5,4,3,2,2,1,-1,-2,-3,-4

То результат будет : -4,-3,-2,-1,1,2,3,4,5

Что я не так делаю ??


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ну, я бы вот так делал:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int main() {

int M = 10;
int A[10] =
{5, 4, 3, 2, 2, 1, -1, -2, -3, -4};

int P = 1, S = 0;
for(int i = 0; i < 10; i++)
if(A[i]<0) P *= A[i]; else S += A[i];

for(i = 0;i < 10; i++) cout<<A[i] << " ";
cout << "------------------ initial array" << endl;

i = 1;
while(i < M)
if (A[i] == A[i-1]) {
for (int j = i; j < M - 1; j++)
A[j] = A[j+1];
M -= 1;
}
else i += 1;


for(i = 0; i < M / 2; i++) {
int temp = A[i];
A[i] = A[M - i - 1];
A[M - i - 1] = temp;
}

for(i = 0; i < M; i++) cout<< A[i] << " ";
cout<<"-------------- final array " << endl;

cout<<" s "<< S;
cout<<" p "<< P;
getche();
return 0;
}
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 18.12.2017 19:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"