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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2013, 02:58   #1
adamans
Новичок
Джуниор
 
Регистрация: 03.01.2013
Сообщений: 2
По умолчанию Решением задачи на С. Есть наработки!

Дано одномерный массив С, состоящий из 12 элементов. Удалить из массива k-й элемент массива (k <12).
Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main(void)
{
  float c[12]={0,1,2,3,4,5,6,7,8,9,10,11}, b[11];
  int k,i,j=0;
  puts("vvedit k");
  scanf("%d", &k);
 
  if  (k<0 || k>11)
  printf("vvedit 0<k<11\n");
  else (k>0 || k<11);
 
  for (i=0; i<12; i++)
{
  printf("%.0f ", c[i]);
  if(i==k) continue;
  b[j]=c[i];
  j++;
}
  printf("\n");
  for (i=0; i<11; i++)
{
  printf("%.0f ", b[i]);
} 
  printf("\n");
  getch();
  return (0);
}
Надо переделать под функцию malloc.
Вот код, выдает ошибку!
Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
  float c[12]={0,1,2,3,4,5,6,7,8,9,10,11}, b[11];
  int k,i,j=0,*d;
  clrscr();
  puts("vvedit k");
  scanf("%d", &k);
 
  d=malloc(k*sizeof(int)); 
  printf("adres masivu=%p\n",d);
 
  if  (k<0 || k>11)
  printf("vvedit k<11");
 
  else (k>0 || k<11);
  for (i=0; i<12; i++)
{
  printf("c=%.0f adres%p\n", *(d+i));
  if(i==k) continue;
  *(b+j)=*(d+i);
  j++;
}
  printf("\n");
  for (i=0; i<11; i++)
{ 
  printf("b=%.0f adres=%p\n", b[j]);
}
  printf("\n");
  getch();
  free(d);
  return (0);
}
adamans вне форума Ответить с цитированием
Старый 03.01.2013, 03:20   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

1. Зачем вам третий массив b?
2.
Код:
d=malloc(k*sizeof(int));
Вам надо удалить к-тый элемент. Вопрос: сколько элементов останется в массиве?
3.
Код:
else (k>0 || k<11);
Что вы хотели сказать этой строчкой компилятору?
4.
Код:
*(b+j)=*(d+i);
Думаем... У вас д пустой, вы только выделили память под элементы. Наверное, предполагалась, что вы в него будете копировать элементы, кроме к-того. См. п 1
5.
Код:
printf("c=%.0f adres%p\n", *(d+i));
...
printf("b=%.0f adres=%p\n", b[j]);
Ваш компилятор не ругается, что вы хотите вывести два элемента, а в параметрах только один?
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 03.01.2013, 03:30   #3
adamans
Новичок
Джуниор
 
Регистрация: 03.01.2013
Сообщений: 2
По умолчанию

можете помочь пожалуйста решить эту задачу
adamans вне форума Ответить с цитированием
Старый 03.01.2013, 06:41   #4
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Ну она ж у вас почти решена, чуть напильничком по пунктам и усе. Есть что-то не понятное в моих вопросах?
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часы(есть наработки) sllh_111 Помощь студентам 2 19.04.2010 17:04
Pascal, наработки есть. Otre4eHHbIu Помощь студентам 1 24.12.2009 08:43
Pascal, модули, наработки есть. auhb Помощь студентам 2 07.12.2009 23:43
Pacsal, Модули, Наработки есть Otre4eHHbIu Помощь студентам 3 11.10.2009 18:27