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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2012, 14:07   #1
spinogryz_ua
Форумчанин
 
Аватар для spinogryz_ua
 
Регистрация: 14.01.2012
Сообщений: 150
По умолчанию Перевод на С++

Помогите с пожалуйста с переводом программы.
А то я с указателями в С++ вообще дуб.

В программе нужно вычислить кол-во записей, сума елементов которых превышает заданое А.

Код:
uses CRT;
type zap=record
     p1:real;
     p2:integer
     end;
    mas=array[1..9] of zap;
var matr:^mas;
a:integer;
i,k:byte;
s:real;
begin
Writeln('  Введіть А');
Readln(a);
Writeln;
randomize;
new(matr);
writeln('  №    Поле 1     Поле 2   Сума полів');
k:=0;
for i:=1 to 9 do
begin
     s:=0;
     matr^[i].p1:=random(50)-25+random;
     matr^[i].p2:=random(50)-25;
     s:= matr^[i].p1+matr^[i].p2;
     if s>a then
        k:=k+1;
     writeln(i:3,matr^[i].p1:12:2,matr^[i].p2:8,s:12:2);
end;
Writeln;
Writeln('Кількість записів, сума елементів яких,');
Writeln('перевищує задане число - ', k);
end.
Заранее спасибо.
Буду очень признателен.

Последний раз редактировалось spinogryz_ua; 24.12.2012 в 14:11.
spinogryz_ua вне форума Ответить с цитированием
Старый 24.12.2012, 14:54   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

spinogryz_ua

В программе нужно вычислить кол-во записей, сума елементов которых превышает заданое А.

наверное, как-то так...
Код:
#include <iostream>
#include <locale>
#include <algorithm>

#include <stdlib.h>
#include <time.h>

const size_t N = 10;

struct Z
{
	float p1;
	int p2;
};

struct R
{
	char operator()() const
	{
		return (char) rand();
	}
};

void fill(char* begin, char* end)
{
	std::generate(begin, end, R());
}

int print_summa()
{
	char* mem = new char[N * sizeof(Z)];
	fill(mem, mem + N * sizeof(Z));
		
	char* p = mem;
	Z* arr[N] = {0};
	for (size_t i=0; i<N; i++, p += sizeof(Z))
		arr[i] = new(p) Z;

	float A;
	std::cin >> A;

	size_t count = 0;
	for (size_t i=0; i<N; i++)
	{
		if (arr[i]->p1 + arr[i]->p2 > A)
			count++;
	}

	delete [] mem;

	std::cout << "Количество элементов, насяльника!" << std::endl;
	std::cout << count << std::endl;
		
	return 0;
}

int main()
{
	setlocale(LC_ALL, "");
	srand((unsigned) time(NULL));

	print_summa();

	return 0;
}
Rififi вне форума Ответить с цитированием
Старый 25.12.2012, 06:52   #3
spinogryz_ua
Форумчанин
 
Аватар для spinogryz_ua
 
Регистрация: 14.01.2012
Сообщений: 150
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод на Си istavzev Помощь студентам 1 23.05.2012 21:04
Перевод на C++ SDmaN C/C++ Сетевое программирование 7 24.01.2012 20:27
перевод lilek Помощь студентам 0 23.12.2010 21:49
перевод в СИ Temka Общие вопросы Delphi 0 10.12.2010 19:14
Перевод FVGK-2009 Visual C++ 5 26.10.2010 07:54