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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 06:53   #1
faradise
Новичок
Джуниор
 
Регистрация: 20.12.2011
Сообщений: 2
Печаль Вынос функций

Здравствуйте,помогите пожалуйста исправить программы.
В общем,вчера преподавательница по программированию отправила переделывать 4 задачи,сказала что нужно программу разбить на функции. Учусь на первом курсе,поэтому не слишком понимаю что она от меня хотела.Разговаривал с другом(3-й курс) он сказал что нужно вынести функции из майна,и что это в общем-то быстро,честно,как это сделать не понимаю.Если бы не поставила такой маленький срок,сам бы постарался разобраться,но не успеваю т.к. уже зачёты начинаются,и кроме информатики всё же ещё предметы есть по которым нужно домашнюю делать((А сдавать уже в четверг,без этих программ допуск до сессии не получу.Тему насчёт халявы читал,понимаю что никто мне ничего не должен,но надеюсь на помощь.Вот исходные коды программ с комментариями
Код:
 Лаб 2 Задание 1
  Преобразовать  массив целых чисел Х по следующему правилу: все отрицательные 
  элементы массива Х перенести в его начало, а все остальные в конец, 
  сохраняя исходное расположение, как среди отрицательных, так и среди остальных
  элементов.
*******************************************************************************/
// Подключение библиотек:
#include <stdio.h>
#include <stdlib.h>
// Тело программы:
int main(int argc, char *argv[])
{
  int n = 0; // размер массива
  printf("n=");
  scanf("%d",&n);
  // теперь запрашиваем динамическую память под массив:
  int *X = (int *)malloc(n*sizeof(int));
  int i=0; // счетчик для циклов
  printf("\nX(%d)=", n); // просим ввести массив (числа через пробел);
  // затем в цикли читаем числа, вводимые пользоветем:
  for (i = 0; i < n; i++)
      scanf("%d",&X[i]);
  // выделим память под новый массив:
  int *Y = (int *)malloc(n*sizeof(int));
  int j = 0; // счетчик для второго массива
  // пробежимся по первому массиву и выберем все отрицательные числа:
  for (i = 0; i < n; i++)
      if (X[i] < 0)
         Y[j++] = X[i];
  // а потом еще раз пробежимся, и выберем положительные:
  for (i = 0; i < n; i++)
      if (X[i] >= 0)
         Y[j++] = X[i];
  // И теперь распечатаем полученный массив:
  printf("\n");
  for (i = 0; i < n; i++)
      printf(" %d", Y[i]);
  printf("\n\n");
 
  system("PAUSE");	
  return 0;
}
2-я задача
Код:
/*******************************************************************************
  Лаб 2 Задание 2
  Дан массив вещественных чисел. Определить индекс того из них, которое наиболее
  близко к заданному целому числу.
*******************************************************************************/
// Бибилиотеки:
#include <stdio.h>
#include <stdlib.h>
// Тело программы:
int main(int argc, char *argv[])
{
  int n=0; // количество чисел, которые собирается ввести пользователь;
  printf("array size = ");
  scanf("%d",&n);
  float N = 0; // искомое целое число (храним как вещественное)
  printf("\nneed N = ");
  scanf("%f",&N);
  float e = N; // переменная для схранения "схожести"
  printf("\narray(%d) = ", n);
  int i = 0; // счетчик цикла
  int j = -1; // индекс наиболее схожего элемента
  /*
      Конкретно в этой задаче массив нам хранить вовсе не обязательно,
      т.к. мы можем сразу проверять число;
  */
  float arNum = 0; // число, читаемое с экрана;
  for (i = 0; i < n; i++) // читаем в цикле
  {
      scanf("%f",&arNum);
      if (abs(arNum-N) < e) // если модуль разницы меньше, чем хранимый ранее
      {
        e = abs(arNum-N); // запоминаем разницу
        j = i; // и индекс
      }
      printf("\n j = %d, e = %f", j, e);
  }

  printf("\nresult index = %d\n", j);    
  system("PAUSE");	
  return 0;
}
faradise вне форума Ответить с цитированием
Старый 20.12.2011, 06:53   #2
faradise
Новичок
Джуниор
 
Регистрация: 20.12.2011
Сообщений: 2
По умолчанию

3-я задача
Код:
/*******************************************************************************
  Лаб 3 Задание 1
  Преобразовать исходную строку, приводя все слова к заданной длине следующим 
  образом: если длина слова меньше заданной, дополнить его последней буквой, 
  а если больше - обрезать. 
*******************************************************************************/
// Библиотеки:
#include <stdio.h>
#include <stdlib.h>
// Тело программы:
int main(int argc, char *argv[])
{
/*
  Исходные данные для задачи хранятся в файле.
  Первая строка - число - длинна слов;
  Вторая строка - анализируемая
*/
    FILE *fp = fopen("input.txt","rt");
    if (fp) // если файл открылся
    {
        int N = 0; // длина
        char buf[255]={0}; // буфер под строку
        fscanf(fp, "%d\n", &N); // читаем число
        fgets(buf, 255, fp); // читаем строку
        fclose(fp);
        int i=0, j=0, sum=0;
        for (i = 0; i < 255; i++) // перебираем буфер
        {
            if (buf[i]!=' ' && buf[i]!=0) // если слов не кончилось
            {
               sum++; // считаем его длину
               if (sum <= N) // и если не превышает лимита
                 printf("%c", buf[i]); // выводим
            }
            else // если слово кончилось
            {
               for (j = 0; j < (N-sum); j++) // дополним до длины, если необходимо
                   printf("%c", buf[i-1]);
               sum = 0; // обнулим счетчик длины
               printf("\n"); // для разделения слов
               if (buf[i]==0) // если встречен символ конца строки
                 break; // то завершим цикл
            }
        }
    }
    else
        printf("Erorr fopen: input.txt");

    printf("\n\n");
    system("PAUSE");	
    return 0;
}
4-я задача
Код:
/*******************************************************************************
  Лаб 3 Задание 2
  В тексте найти заданное слово и удалить слово после него.
*******************************************************************************/
// Библиотеки:
#include <stdio.h>
#include <stdlib.h>
// Тело программы:
int main(int argc, char *argv[])
{
/*
  Исходные данные для задачи хранятся в файле.
*/
    FILE *fp = fopen("input.txt","rt");
    if (fp) // если файл открылся
    {
        char word[255]={0}; // буфер под слово
        char buf[255]={0}; // буфер под строку
        fgets(word, 255, fp); // читаем слово
        fgets(buf, 255, fp); // читаем строку
        fclose(fp);
        int i=0, j=0;
        char start_del = 0; // флаг надо ли удалять слово
        for (i = 0; i < 255; i++) // перебираем буфер
        {
            if (start_del == 0) // пока слово удалять не надо
                if (buf[i] == word[j]) // сравниваем текущий фрагмент с искомым словом
                    j++; // если свопадает - двигаем счетчик в слове
                else // если нет - проверяем, а кончилось ли слово?
                    if (word[j]!=0 && word[j]!=10 && word[j]!=13) // 0, 10, 13 - символы конца строки, ищем любой
                        j = 0; // если слово не кончилось, значит фрагмент совпал лишь частично, ищем заново;
                    else // иначе
                        start_del = 1; // говорим что пора удалять слово
            else // если удалять
                if (buf[i]==' ') // то только до пробела
                   start_del = 2; // потом говорим что хватит (и слово уже не ищем)
            
            if (start_del!=1) // если флаг не стоит в режиме удаления, печатаем строку как есть:
                printf("%c",buf[i]);
        }
    }
    else
        printf("Erorr fopen: input.txt");

    printf("\n\n");
    system("PAUSE");	
    return 0;
}
Язык выполнения C++,компилятор dev C++
буду благодарен,если кто-то исправит,или хотя бы покажет на примере как делать,там уж буду сам пробовать уложиться в срок..
faradise вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi: аппроксимация функций методом базиса из финитных функций Denna Помощь студентам 1 12.03.2012 19:23
Экспорт/Подмена DLL (Brain->Вынос) coNsept Общие вопросы C/C++ 1 26.07.2011 01:53
Вынос цикла Dima DDM Общие вопросы Delphi 5 11.07.2011 18:24
вынос методов класса в дин библиотеки(dll) Пепел Феникса Общие вопросы C/C++ 8 07.12.2010 20:55
Вынос компонентов программы (которые делфи всталяет в каждую программу) из проги в dll GanGSISoft Общие вопросы Delphi 17 02.07.2009 17:24