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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2012, 19:22   #1
vnaumenko
Пользователь
 
Регистрация: 19.05.2012
Сообщений: 14
Восклицание Переделать пару лабораторных в функции

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

Функции и массивы
Выполнить задания третьего семинара («Одномерные массивы»)
Код:
/*
	Вариант №16 | Науменко Вячеслав АСб11и1.
	В одномерном массиве, состоящем из N вещественных элементов, вычислить:
	1) количество отрицательных элементов массива;
	2) сумму модулей элементов массива, расположенных после минимального по
	модулю элемента.
	Заменить все отрицательные элементы массива их квадратами и упорядочить
	элементы массива по возрастанию.
	Дата: 24.03.12
	Компилятор: CodeGear RAD Studio 2007
*/
#include <iostream.h>
#include <math.h>
#include <windows.h>
using namespace std;
int main(){
	char s[256];
	CharToOem("Массивы. Вариант 16. Науменко Вячеслав. АСб11и1.", s);
	SetConsoleTitle(s);
	const int N=10; // Длина массива
	float Mas[N], MasVKvadrat[N], Negative=0, MinMas, NomerMinMas, x;
	int i, j, SummaPosleMin = 0;
	CharToOem("Вводим массив: ", s);
	cout << s;
	for (i = 0; i < N; i++) {
		cin >> Mas[i];
	}
	CharToOem("Массив: ", s);
	cout << s;
	for (i = 0; i < N; i++) cout << Mas[i] << " ";
	cout << endl;
	for (i = 0; i < N; i++)	{
		if (Mas[i] < 0) Negative++;
	}
	CharToOem("Количество отрицательных чисел: ", s);
	cout << s << Negative << endl;
	MinMas = Mas[0];
	NomerMinMas = 0;
	for (i = 0; i < N; i++)	{
		if (abs(MinMas) > abs(Mas[i])) ((MinMas = Mas[i]) && (NomerMinMas = i+1));
	}
	CharToOem("Минимальный по модулю: ", s);
	cout << s << MinMas << endl;
	CharToOem("Позиция первого минимального по модулю: ", s);
	cout << s << NomerMinMas+1 << endl;
	for (i = NomerMinMas; i < N; i++) SummaPosleMin = SummaPosleMin + abs(Mas[i]);
	CharToOem("Сумма модулей элементов после минимального по модулю: ", s);
	cout << s << SummaPosleMin << endl;
	for (i = 0; i < N; i++)	{
		if (Mas[i] < 0) MasVKvadrat[i] = Mas[i]*Mas[i];
		else (MasVKvadrat[i] = Mas[i]);
	}
	CharToOem("Массив, где отрицательные в квадрате: ", s);
	cout << s;
	for (i = 0; i < N; i++) cout << MasVKvadrat[i] << " ";
	cout << endl;
	for (i = 0; i < N-1; i++){
		int tmp = 0;
		for (j = i+1; j < N; j++)
			if (MasVKvadrat[i] > MasVKvadrat[j]) {
				tmp = MasVKvadrat[i];
				MasVKvadrat[i] = MasVKvadrat[j];
				MasVKvadrat[j] = tmp;
				}
	}
	CharToOem("Массив упорядочен по возрастанию: ", s);
	cout << s;
	for (j = 0; j < N; j++) cout << MasVKvadrat[j] << " ";
	cout << endl;
	cout << (char)cin.get();
	cin.get();
	return 0;
}
и четвертого семинара («Двумерные массивы»)
vnaumenko вне форума Ответить с цитированием
Старый 04.06.2012, 19:23   #2
vnaumenko
Пользователь
 
Регистрация: 19.05.2012
Сообщений: 14
По умолчанию

Код:
/*
	Вариант №16 | Науменко Вячеслав АСб11и1.

	В одномерном массиве, состоящем из N вещественных элементов, вычислить:
	1) количество отрицательных элементов массива;
	2) сумму модулей элементов массива, расположенных после минимального по
	модулю элемента.
	Заменить все отрицательные элементы массива их квадратами и упорядочить
	элементы массива по возрастанию.

	Компилятор: CodeGear RAD Studio 2007
*/
//----------------------------------------------------------------------------//
#include <iostream.h>
#include <math.h>
#include <algorithm>
#include <windows.h>
#include <iomanip.h>
//----------------------------------------------------------------------------//
using namespace std;
int main(){
	char q[256];
	char w[256];
	CharToOem("Двумерные массивы. Вариант 16. Науменко Вячеслав. АСб11и1.", q);
	SetConsoleTitle(q);
	int nstr, ncol;

	CharToOem("     Создаем двумерный массив     ", q);
		cout << q; 	   cout << endl;
	CharToOem("Введите количество строчек: ", q);
		cout << q;	   cin >> nstr;
	CharToOem("Введите количество колонок: ", q);
		cout << q;	   cin >> ncol;

	int s, c, cc, povt_temp, povt, min;
	int **a = new int *[nstr];
	int *povtor = new int [nstr];
	for (s=0; s<nstr; s++) a[s] = new int [ncol];
	for (s=0; s<nstr; s++) povtor[s] = 0;

	CharToOem("Введите элементы массивы", q);
		cout << endl << q << endl;
	for (s=0; s<nstr; s++)
		for (c=0; c<ncol; c++) cin >> a[s][c];
	for (s=0; s<nstr; s++) {
		for (c=0; c<ncol; c++) cout << setw(4) << a[s][c] << " ";
			cout << endl;
		}
	CharToOem("Первый положительный столбец: ", q);
	for (c=0; c<ncol; c++) {
		for (s=0; s<nstr; s++) {
			if ( a[s][c]<0 ) break;
		}
		if (s == nstr) {
			cout << q << c+1;
			break;
		}
	}
	cout << endl;
	CharToOem("Повторений в строке ", q);
	for (s=0; s<nstr; s++) {
		for (c=0; c<ncol; c++) {
			for (cc=c+1; cc<ncol; cc++) {
				if(a[s][c] == a[s][cc]) {
					povtor[s]++;
				}
			}
		}
	if (povtor[s] == 10) {
		povtor[s] = povtor[s]-5;
		cout << q << s+1 << ": " << povtor[s] << endl;
	}
	if (povtor[s] == 6) {
		povtor[s] = povtor[s]-2;
		cout << q << s+1 << ": " << povtor[s] << endl;
	}
	if (povtor[s] == 3) {
		povtor[s] = povtor[s];
		cout << q << s+1 << ": " << povtor[s] << endl;
	}
	if (povtor[s] == 1) {
		povtor[s] = povtor[s]+1;
		cout << q << s+1 << ": " << povtor[s] << endl;
	}
	if (povtor[s] == 0) {
		povtor[s] = povtor[s]+1;
		cout << q << s+1 << ": " << povtor[s] << endl;
	}
	}

	int buf_a, buf_povtor, nmin;
	for (s=0; s<nstr-1; s++) {
		nmin = s;
		for (c=s+1; c<nstr; c++) {
			if (povtor[c] < povtor[nmin]) nmin = c;
		}
		buf_povtor = povtor[s];
		povtor[s] = povtor[nmin];
		povtor[nmin]=buf_povtor;
		for (c=0; c<ncol; c++) {
			buf_a = a[s][c];
			a[s][c] = a[nmin][c];
			a[nmin][c] = buf_a;
		}
	}
	for (s=0; s<nstr; s++) {
		for (c=0; c<ncol; c++) cout << setw(4) << a[s][c] << " ";
			cout << endl;
	}

	cout << endl;

	cout << (char)cin.get();
	cin.get();
	return 0;
}
, оформив каждый пункт задания в виде функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
vnaumenko вне форума Ответить с цитированием
Старый 04.06.2012, 19:23   #3
vnaumenko
Пользователь
 
Регистрация: 19.05.2012
Сообщений: 14
По умолчанию

Функции, строки и файлы
Выполнить задания пятого семинара («Строки и файлы»)
Код:
/*
	Строки и файлы. Вариант 16. Науменко Вячеслав. АСб11и1.

	Написать программу, которая считывает текст из файла и выводит на экран
	сначала вопросительные, а затем восклицательные предложения.

	Компилятор: CodeGear RAD Studio 2007
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#include <iomanip.h>

unsigned char *vopr[50];
unsigned char *voskl[50];
unsigned char buffer[1500];
char filename[80];
int kl=0;
int pr=0;
FILE *fp;
FILE *save;
 
int main(void)
{
  int c;
  int kolvo=0;
  int n=0;
  char q[256];
  char w[256];
  CharToOem("Строки и файлы. Вариант 16. Науменко Вячеслав. АСб11и1.", q);
	SetConsoleTitle(q);
  CharToOem("ВВЕДИТЕ ПУТЬ К ФАЙЛУ: ", w);
  printf(w);
  gets(filename);

  if((fp=fopen(filename, "r"))==NULL)
	{
	   CharToOem("ОШИБКА ЧТЕНИЯ ФАЙЛА [%s]...\n", w);
	   fprintf(stderr, w, filename);
	   CharToOem("Нажмите клавишу Enter...", w);
	   printf(w);
       getch();
       fclose(fp);
       exit(1);
	}
 
  rewind(fp);
 
 
  while(!feof(fp))
  {
    fgets(&buffer[kolvo], 2 ,fp);
 
    if(buffer[kolvo]=='.')
    {
       for(n=0; n<1500; n++)
       {
         buffer[n]=='\0';
       }
       kolvo=-2;
    }
 
    if(buffer[kolvo]=='!')
    {
       voskl[kl]=(unsigned char *)malloc(strlen(buffer)+1);
       strcpy(voskl[kl++], buffer);
       for(n=0; n<1500; n++)
       {
         buffer[n]=='\0';
       }
       kolvo=-2;
    }
 
    if(buffer[kolvo]=='?')
    {
       vopr[pr]=(unsigned char *)malloc(strlen(buffer)+1);
       strcpy(vopr[pr++], buffer);
       for(n=0; n<1500; n++)
       {
         buffer[n]=='\0';
       }
       kolvo=-2;
    }
 
    kolvo++;
  }
 
  if((save=fopen("save.txt", "w"))==NULL)
	{
	   CharToOem("Ошибка чтения файла...\n", w);
	   fprintf(stderr, w);
	   CharToOem("Нажмите клавишу Enter...", w);
	   printf(w);
       fclose(save);
       fclose(fp);
       getch();
       exit(1);
    }

  kolvo=0;
  CharToOem("\nВОПРОСИТЕЛЬНЫЕ: \n", w);
  printf(w);
  CharToOem("ВОПРОСИТЕЛЬНЫЕ: \n", w);
  fprintf(save, w);
 
  for(kolvo=0; kolvo<pr; kolvo++)
  {
  fprintf(stdout, "%s\n", vopr[kolvo]);
  fprintf(save, "%s\n", vopr[kolvo]);
  }
 
  CharToOem("\n\nВОСКЛИЦАТЕЛЬНЫЕ: \n", w);
  printf(w);
  CharToOem("ВОСКЛИЦАТЕЛЬНЫЕ: \n", w);
  fprintf(save, w);
 
  for(kolvo=0; kolvo<kl; kolvo++)
  {
  fprintf(stdout, "%s\n", voskl[kolvo]);
  fprintf(save, "%s\n", voskl[kolvo]);
  }
 
 
  fclose(save);
  fclose(fp);

  CharToOem("\n\nКОНЕЦ", w);
  puts(w);
  getch();
  return 0;
}
, оформив в виде функций законченные последовательности действий. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.

Огромное вам спасибо!
vnaumenko вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переделать готовую задачу по С++ на функции bwitcher Фриланс 3 03.06.2012 18:16
Переделать с использованием функции Camelot_2012 Паскаль, Turbo Pascal, PascalABC.NET 1 02.05.2012 22:57
переделать в процедуры и функции Richik123 Паскаль, Turbo Pascal, PascalABC.NET 1 12.04.2012 21:11
Пару лабораторных по Pascal и одна на Delphi Seidgin Паскаль, Turbo Pascal, PascalABC.NET 4 16.01.2012 11:57
Помогите решить пару примеров!! функции. blackstersl Свободное общение 5 01.02.2009 09:11