Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Помогите решить задачу с массивом


Автор: b44 19.5.2006, 14:54
дан целочисленый массив размера n, продублировать в нем все четные числа в этом же массиве.

Получается что размер массива увеличивается в двое. Напишите пожалуйста код

Добавлено @ 14:56 
пожалуйста если что моя ася 290100815 

Автор: GremlinProg 19.5.2006, 15:01
Код

for(int j,c = 0,i = n;i--;)
  if(!(m[i]&0x00000001))
    c++;

m = realloc(m,(n+c)*sizeof(int));

for(j=0,i = n;i--;)
  if(!(m[i]&0x00000001)){
     m[n+(j++)] = m[i];
  }


Добавлено @ 15:07 
а ведь мог бы и сам решить! 

Автор: Earnest 19.5.2006, 15:09
Для домашних заданий, курсовых, существует "Центр Помощи"

Тема перенесена!  

Автор: Solomon 19.5.2006, 15:18
b44, 


Цитата(b44 @  19.5.2006,  14:54 Найти цитируемый пост)
продублировать в нем все четные числа в этом же массиве.

Т.е. n+1 елементу присвоить значение первого четного числа, n+2 - второго и т.д? Павильно я понял?

Если я правильно понял то вот
Код

#include <iostream.h>

int A[100]; //Максимальный размер масива я взял 100 и +100 для дополнения массива.
int n=200; 
    int j=0;

void main()
{

    while(n>100)
    {
        //Введем размер массива
        cout<<"Vvedite razmer"; 
        cin>>n;
    }

    cout<<"Vvedite masiv";
    //Введем сам масив
    for(int i=0;i<n;i++) 
    {
        cin>>A[i];
    }

    for(int i=0;i<n;i++)
    {
        if(A[i]%2==0) 
        {
            A[i+n-1]=A[i];
            j++;
        }
    }

    // И выводим получившийся масив на экран
    for(int i=0;i<(n+j);i++) 
    {
        cout<<A[i]<<" ";
    }
}


Добавлено @ 15:22 
GremlinProg, ну ты конечно загнул. Я так понял это задание из учебного заведения. Поверь если он принесет такой ответ как у тебя его учителя пошлют куда подалие.
 я понимаю что у меня туповато написано зато будет понятно всем принцип работы...


p.s. Ну и медленно я пишу smile
пока первое сообщение писал, уже перенесли тему и один раз успели ответить. Ужас.  smile

Добавлено @ 15:26 
Или я неправильно понял. Может если A[i] - четное A [i+1]=A[i] а следущие елементы здвинуть. Объясните мне условие, если я заблуждаюсь  smile 
 smile  

Автор: b44 19.5.2006, 16:09
надо делать сдвиг, например массив 1,34,46,7 прога должжна вывести 1, 34,34,46,46,7
пожалуйста исправь написаный мной код

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#define n 5
void main()
{
randomize();
clrscr();
int a[2*n];
int j=0;
for(int x=0; x<n; x++)
{
a[x]=random(10)+5;
cout<<a[x]<<' ';
}
cout<<endl;
    for(int i=0; i<n;i++)
    {
    if(a[i]%2==0)
    {
        a[i+n-1]=a[i];
        j++;
    }
    }
    for(i=0; i<(n+j); i++)
    {
    cout<<a[i]<<' ';
    }
getch();
} 

Автор: Solomon 19.5.2006, 17:05
Воть...
Код

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>

#define n 5
void main()
{
    int a[2*n];
    int j=1;
    for(int x=0; x<n; x++)
    {
        a[x]=rand()%10+8;
        cout<<a[x]<<' ';
    }
    cout<<endl;

    for(int i=0; i<n;i++)
    {
        if(a[i]%2==0)
        {
            for(int h=n+j;h>i;h--)
            {
                   a[h]=a[h-1];
            }
            j++;    
            i++;
        }
    }

    for(i=0; i<n+j-1; i++)
    {
        cout<<a[i]<<' ';
    }
    //getch();
} 


кстати ты с каким С работаешь. Где ты выдрал функции randomize() и clrscr() ???? 

Автор: b44 19.5.2006, 17:33
я пишу на Turbo с++

подскажите почему он не дублирует последние два числа если они четные

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#define n 5
void main()
{
randomize();
clrscr();
    int a[2*n];
    int j=1;
    for(int x=0; x<n; x++)
    {
    a[x]=random(10)+8;
    cout<<a[x]<<' ';
    }
    cout<<endl;

    for(int i=0; i<n;i++)
    {
    if(a[i]%2==0)
    {
        for(int h=n+j;h>i;h--)
        {
           a[h]=a[h-1];
        }
        j++;
        i++;
    }
    }
    for(i=0; i<n+j-1; i++)
    {
    cout<<a[i]<<' ';
    }
    getch();
}
 

Автор: Solomon 19.5.2006, 17:39
b44, Даже незнаю, у меня вроде норально работало...
зайди в аську я тебе написал, может что предумаем.... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)