Страница 2 из 4
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 17 мар 2008, 17:06
kapitay
Здравствуйте я тут недавно нашел одну задачу на массивы и мне стало интересно её решить! Поначалу показалось не очень сложной, а теперь когда вник в суть дела оказалось что она мне не под силу.. Помогите мне её решить (просто оочень интересн о) ВОТ СУТЬ ЗАДАЧИ: Дана последовательность целых чисел. Опредилить количество различных чисел этой последовательности.
Я решил что после того как вводим числа их нужно сначала отсортировать методом пузырьковой сортировки (чтобы вводимые числа выстроились в ряд по порядку) а потом сравнивать рядом стоящие числа....
P>S/ Задачка должна решаться с помощью массива
[HTML]Вот мой нелепый кодик))
#include <iostream>
using namespace std;
int main()
{
int nums[10];
int a,b,t,vv;
int size;
int co=0,so=0,sum=0,dum=07;
bool pll=false;
size=10;
cout<<"vvedite rad chisel dla analiza ";
for (t=0;t<size;t++) {
cin>>vv;
nums[t]=vv;
}
for (a=1;a<size;a++)
for(b=size-1;b>=a; b--)
{
if(nums[b-1]>nums
) {
t=nums[b-1];
nums[b-1]=nums;
nums=t;
}
}
cout<<"teper chisla raspolojeni po poradku\n ";
for (t=0;t<size;t++) cout<<nums[t]<<" ";
for (t=0;t<size;t++)
{
if (nums=nums[b+1] && pll==0) {co++; pll=true;}
if (nums=nums[b+1] && pll==1) {sum=co; pll=true;}
if (nums!=nums[b+1] && pll==1) {so++; pll=false;}
if (nums!=nums[b+1] && pll==0) {dum=so; pll=false;}
}
sum+=dum;
cout<<sum<<" ";
return 0;
}[/HTML]
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 19 мар 2008, 23:21
drummer
замени
Код: Выделить всё
for (t=0;t<size;t++)
{
if (nums[b]=nums[b+1] && pll==0) {co++; pll=true;}
if (nums[b]=nums[b+1] && pll==1) {sum=co; pll=true;}
if (nums[b]!=nums[b+1] && pll==1) {so++; pll=false;}
if (nums[b]!=nums[b+1] && pll==0) {dum=so; pll=false;}
}
sum+=dum;
cout<<sum<<" ";
на
Код: Выделить всё
sum=0;
for (t=0;t<size-1;t++)
{
if(nums[t]!=nums[t+1]) sum++;
}
sum++;
cout<<sum<<" ";
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 20 мар 2008, 14:20
Хыиуду
Можно создать массив булевских элементов, проинициализировать их нулями. Пройтись по исходному, для каждого элемента исходного соответствующий элемент булевского установить в 1. Потом подсчитать количество единиц в булевском.
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 21 мар 2008, 16:09
kapitay
drummy спасибо большое, мне реально даже в голову не пришло упростить код =) Уже второй раз меня выручаете ))
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 19 май 2008, 18:47
syrr
Здравствуйте уважаемые программисты!
Я понимаю, как это выглядит, когда люди вроде меня просят Вас решить простенькие задачки.Но простенькие это они для Вас...
Есть пара заданий, которые горят...Не успеваю разобраться в теме и, соответственно, их сделать.Все они на массивы.В принципе-ничего сложного если быть в теме.
1. В массиве A из N элементов поменять местами первый элемент с последним, второй с предпоследним и т.д. Элементы массива A должны быть случайными числами в диапазоне от 0 до 100. N вводится.
2. Определить суммы положительных и отрицательных элементов в каждой строке матрицы A размерами N*M . Размеры матрицы и ее элементы задать при помощи ввода.
3. Составить программу, выясняющую, является ли данное слово перевертышем ( так называются слова, читающиеся одинаково слева направо и справа налево, например: ПОТОП, НАГАН ).
P/S:заранее очень вам благодарен.Буду очень рад если кто чем поможет!

Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 20 май 2008, 11:30
Хыиуду
1.
Код: Выделить всё
for(i=0; i<N/2; i++)
{a[i]+=a[N-i-1];
a[N-i-1]=a[i]-a[N-i-1];
a[i]-=a[N-i-1];
}
3. Пройтись до середины строки: если хоть один i-й символ не совпадает с N-i-тым, то не перевертыш. Если все совпадают - перевертыш. Кстати, по науке это называется палиндром.
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 20 май 2008, 13:17
syrr
Хыиуду, спасибо

.С этими все понятно более-менее
Может кто поможет со 2-й ?

Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 20 май 2008, 16:05
syrr
Ах, да, забыл еще кое-что...А как массив случайными числами заполнить?(применимо к первой задаче)

Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 20 май 2008, 16:53
Albor
syrr писал(а):Ах, да, забыл еще кое-что...А как массив случайными числами заполнить?(применимо к первой задаче)
Код: Выделить всё
#include<iostream.h>
#include "time.h"
#include "stdlib.h"
void main(void)
{
srand(time(0));
const N(3);
const M(3);
int znak;
int matrix[N][M];
for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
{
znak=rand()%2;
matrix[i][j]=rand()%100 * (znak==1?-1:1);
}
int sum;
int negsum;
for(i=0;i<N;i++)
{
sum=0;
negsum=0;
for(int j=0;j<M;j++)
{
cout<<matrix[i][j]<<'\t';
if(matrix[i][j]<0) negsum+=matrix[i][j];
else sum+=matrix[i][j];
}
cout<<"negsum="<<negsum<<'\t'<<"possum="<<sum<<endl;
}
}
Примерно так. А применительно к первой задаче, переделай сам.
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 20 май 2008, 17:47
syrr
Оке.Спасибо большое, Albor, .Попробую.