Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2012, 12:18   #1
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
Подмигивание СИ, доработать 3 программы на одномерные массивы...

Здравствуйте. Никак не могу сообразить как легко и просто написать 3 программы. Написать нужно на чистом СИ...

Условия:
1)Даны два массива A и B размера 5, элементы которых упорядочены по возрастанию. Объединить эти массивы так, чтобы результирующий массив C (размера 10) остался упорядоченным по возрастанию.

PHP код:
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
int main()
{
    const 
long n=5m=10;
    
long a[n], b[n], c[m], iy=1jz=0;
     
srand(time(0));
     
a[-1]=1+rand()%24;
     
b[-1]=1+rand()%24;
     
//заполняем массив a по возрастанию
    
for (i=0i<ni++) 
    {
        
a[i]=a[i-1]+rand()%76;
        
printf("A%u:%u\t",y,a[i]);
        
y++;

    }
    
printf("\n\n");
    
y=1;
    
//заполняем массив b по возрастанию
    
for (i=0i<ni++) 
    {
        
b[i]=b[i-1]+rand()%76;
        
printf("B%u:%u\t",y,b[i]);
        
y++;
    }
    
printf("\n\n");
    
//соединяем массивы
    
j=0;
    while (
i!=&& j!=5)
    {
        if (
a[i]<b[j]) {c[z]=a[i]; i++;}
        else {
c[z]=b[j]; j++;}
        
z++;
    }
    
//если массив a или b уже полностью перенесён в c то допереносим оставшиеся эл.
    
if (i==5)
    {
        for (
i=ji<mi++)
        {
            
c[z]=a[j];
            
j++;
            
z++;
        }
    }
    if (
j==5)
    {
        for (
j=ij<mj++)
        {
            
c[z]=a[i];
            
i++;
            
z++;
        }
    }
    
y=1;
    
//выводим получившийся массив c
    
for (i=0i<mi++) 
    {
        
printf("A%u:%u\t",y,c[i]);
        
y++;
    }
    
printf("\n\n");

Много воды и естественно программа не работает. И ругается на стек.

2)Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся более двух раз, и вывести размер полученного массива и его содержимое.
Удалить эл., значит сдвинуть массив. Массив лучше задать в {}
Есть наработка, но она с использованием 2 массива, а нужно без.

3)Дано целое число K (> 0) и целочисленный массив размера N. Преобразовать массив, удвоив длину его серии с номером K. Если серий в массиве меньше K, то вывести массив без изменений.
В этой задаче я вообще не понял, что от меня хотят...

Помогите...
Из 23 задач осталось сделать эти 3 и будет зачёт...
Спасибо...
Immoralist вне форума Ответить с цитированием
Старый 26.04.2012, 13:11   #2
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

2. Люблю извращаться =)
Код:
#include <stdio.h>
#include <memory.h>

int main(int argc, char* argv[])
{
  int n = 11;
  int* mas = new int(n);
  for(int i = 0; i<n;i++)
  {
    mas[i] = i;
  }
  mas[4] = 7;
  mas[2] = 8;
  mas[3] = 8;
  mas[5] = 10; 
  for(int i = 0;i<n;i++)
	 printf("%d ",*(mas+i));
  printf("%s","\n");	 
  for(int i = 0;i<n;i++)
  {
	for(int j = n-1;j>i;j--)
	{
	  if(mas[j] == mas[i] && j!=i)
	  {
		memmove(mas+j,(mas+j)+1,(n-(j+1))*sizeof(int));
		n--;
	  }
	}
  }
  printf("size: %d\n",n); 
  for(int i = 0;i<n;i++)
	 printf("%d ",mas[i]);
  delete [] mas;
  return 0;
}
Помог? Оставляем отзыв =)

Последний раз редактировалось Helloween; 26.04.2012 в 13:29.
Helloween вне форума Ответить с цитированием
Старый 26.04.2012, 14:53   #3
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

Спасибо...
Immoralist вне форума Ответить с цитированием
Старый 26.04.2012, 15:09   #4
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

1. Не тестил, но должно работать, тож веселенький извращ =) По третьему ничего не понял что нужно сделать.
Код:
#include <stdio.h>


int main(int argc, char* argv[])
{
  int a[5];
  int b[5];
  int c[10];
  int ci = 0;
  bool isb;
  for(int i = 0,j=3;i<5;i++,j++)
  {
   a[i] = i;
   b[i] = i;
  }

#define split(over,m)                     \
  int j = 0;                              \
  for(int i=0;i<5;i++)                    \
  {                                       \
	if(m[i] < over[j])                    \
	  c[ci++] = m[i];                     \
	else if(m[i]==over[j])                \
	{                                     \
	  c[ci++] = m[i]; c[ci++] = over[j++]; \
	}else c[ci++] = over[j++];            \
  }                                       \
  for(;j<5;j++)                           \
	c[ci++] = over[j];
  if(b[0]>a[0])
	{split(b,a)}
  else {split(a,b)}	                    
  for(int i = 0;i<10;i++)
	 printf("%d ",c[i]);
  return 0;
}
Помог? Оставляем отзыв =)

Последний раз редактировалось Helloween; 26.04.2012 в 15:14.
Helloween вне форума Ответить с цитированием
Старый 26.04.2012, 16:57   #5
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

2 жалуется на стек, 1 пишет отказано в доступе...))
За идеи спасибо, будет время доработаю...
Immoralist вне форума Ответить с цитированием
Старый 26.04.2012, 17:08   #6
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Я в билдере писал, BDS 2006, другие компиляторы могут и ругаться конечно, но не компилируемые примеры я точно не даю.
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 26.04.2012, 17:13   #7
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

У меня VS2010, не понимаю чем людей привлекают другие среды...
Проанализировал код, больно сложный, наверняка есть способ гораздо проще.

Последний раз редактировалось Immoralist; 26.04.2012 в 17:20.
Immoralist вне форума Ответить с цитированием
Старый 26.04.2012, 17:21   #8
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

в 2005й оба работают
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 26.04.2012, 18:11   #9
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

по 2 действительно нужно посмотреть там чего-то видимо с памятью намудрилось
нужно на malloc free переписать
Помог? Оставляем отзыв =)

Последний раз редактировалось Helloween; 26.04.2012 в 18:42.
Helloween вне форума Ответить с цитированием
Старый 27.04.2012, 08:01   #10
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

1)
PHP код:
#include "stdafx.h"
#include <stdio.h>

void main()
{
  const 
short n=5m=10;
  
short a[n]={29274952}, b[n]={1932577192}, c[m], i=0j=0z=0;
  while (
z<m)
  {
      if (
i==5
      {
          for (
zz<mz++)
          {
              
c[z]=a[j];
              
j++;
          }
      }
      if (
j==5
      {
          for (
zz<mz++)
          {
              
c[z]=a[i];
              
i++;
          }
      }
      if (
a[i]<a[j]) {c[z]=a[i]; i++; z++;}
      if (
a[i]>a[j]) {c[z]=a[j]; j++; z++;}
  }
  for (
i=0i<mi++) printf("%u",c[i]);
  
printf("\n\n");

2)
PHP код:
#include "stdafx.h"
#include <stdio.h>

void main()
{
  const 
short n=10;
  
short a[n]={4431864101}, ijp=1rbufzt=1v=0x=0;
  for(
i=0i<ni++)
  {
    
printf("A%u:%u\t",p,a[i]);
    
p++;
  }
  
printf("\n\n");
  
r=n;
  for (
i=0i<ri++)
  {
      
z=1;
      for (
j=tj<rj++)
      {
          if (
a[i]==a[j]) z++;
          if (
z>=3buf=a[i];
      }
      
t++;
      if (
z>=3
      {
          while (
z>0)
          {
              if (
a[v]==buf
              {
                  for (
x=0x<rx++) 
                  {
                      if ((
x+1)==r) break;
                      
a[x]=a[x+1];
                  }
                  
r-=1;
                  
z--;
              }
              
v++;
          }
          
i=0;
          
t=1;
      }
  }
  
printf("%u\n",r);
  
p=1;
  for(
i=0i<ri++)
  {
    
printf("A%u:%u\t",p,a[i]);
    
p++;
  }
  
printf("\n\n");

Обе компилируются, но не работают, ошибку найти не могу...
Immoralist вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доработать две программы, в которых идёт работа с классами HttpWebRequest и HttpWebResponse. goodwen Фриланс 0 13.12.2011 14:19
Доработать код программы. С++ andygarcia86 Помощь студентам 0 14.11.2011 20:32
C++.Доработать 2 программы Eliviel Помощь студентам 4 26.12.2010 12:25
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
доработать кусочек программы Алёна Помощь студентам 1 21.05.2007 13:07