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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2013, 10:46   #1
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию лаба (С++)

помогите с лабой пожалуйсто она так то простая, просто я вообще не понимаю С++

задание:
Лабораторная работа 8 выполняется на основе заданий к лабораторной работе 6.
1. Выбрать задание, соответствующее номеру варианта.
2. Составить программу, которая выполняет следующие действия:
а) ввод исходных массивов;
б) вывод исходных массивов;
в) обработку массивов в соответствии с заданием;
г) вывод результатов с соответствующими комментариями.
Пункты а), б), в), г) оформить в виде функций. Глобальные данные в программе не использовать.

вот текст 6 лабы:
Код:
#include <stdio.h>
#include <conio.h>
#include <locale>
 
void main()
{
    setlocale(LC_ALL, "RUSSIAN");
	int a[20], s, i;
	int* pa;
	s = 0;
	srand(time(NULL));
	pa = &a[0];
	for(i=0; i<20;i++)
	{
		*pa = rand()%20;
		if (i % 2 == 0)
			s = s + *pa;
		else
			s = s - *pa;
		pa++;
	}
	printf("Знакопеременная сумма элементов массива = %d", s);
	getch();
}
я просто не врубаюсь как делать функции??? и в какой момент они будут выполняться??? вот если сравнивать с делфи main выполняется OnCreate???
NewLamer&Programer вне форума Ответить с цитированием
Старый 19.01.2013, 10:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот пример расчета, вынесенного в функцию.
Код:
int Zadanie(int* pa){
	for(i=0; i<20;i++)
	{
		*pa = rand()%20;
		if (i % 2 == 0)
			s = s + *pa;
		else
			s = s - *pa;
		pa++;
	}
return s;
}
void main()
{
    setlocale(LC_ALL, "RUSSIAN");
	int a[20], s, i;
	int* pa;
	s = 0;
	srand(time(NULL));
	printf("Знакопеременная сумма элементов массива = %d", Zadanie(&a[0]));
	getch();
}
Дальше справишся?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2013, 12:48   #3
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

а s у Вас ни как глобальная описана?
Цитата:
Глобальные данные в программе не использовать.
я так подозреваю что описание должно быть в
Цитата:
int zadanie(){};
Не забываем про весы.
KooKish вне форума Ответить с цитированием
Старый 19.01.2013, 14:07   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ни как глобальная описана?
Ни как глобальная. Пусть ее автор самостоятельно опишет внутри функции.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2013, 20:59   #5
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

вот короче что у меня получилось, ошибок тьма... помогите исправить

Код:
#include <stdio.h>
#include <conio.h>
#include <locale>
 

int* vvod(void)
{
	int a[20], i;
	int* pa;
	srand(time(NULL));
	pa = &a[0];
	for(i=0; i<20; i++)
	{
		*pa = rand()%20;
		pa++;
	}
return pa*;
}

void vivod(int* pa)
{
	int i;
	for(i=0; i<20; i++)
	{
		printf("pa[%d] = %d", i, pa*);
	}
}

int obrabotka(int* pa)
{
	int s, i;
	s = 0;
	for(i=0; i<20; i++)
	{
		if (i % 2 == 0)
			s = s + *pa;
		else
			s = s - *pa;
	}
return s;
}

void vivodresult(int s)
{
    setlocale(LC_ALL, "RUSSIAN");
    printf("Знакопеременная сумма элементов массива = %d", s);
}

void main()
{
	vvod(void);
	vivod(vvod(void));
	obrabotka(vvod(void));
	vivodresult(obrabotka(vvod(void)));
	getch();
}
п.с. проверьте еще звезды я там где надо поставил? вообще не понял тему указателей

Последний раз редактировалось NewLamer&Programer; 19.01.2013 в 21:12.
NewLamer&Programer вне форума Ответить с цитированием
Старый 19.01.2013, 21:10   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ошибок тьма
Где? Не вижу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2013, 21:15   #7
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Где? Не вижу.
warning C4244: аргумент: преобразование 'time_t' в 'unsigned int', возможна потеря данных
error C2059: синтаксическая ошибка: ;
error C2059: синтаксическая ошибка: )
error C2144: синтаксическая ошибка: перед "void" требуется ")"
error C2059: синтаксическая ошибка: )
error C2144: синтаксическая ошибка: перед "void" требуется ")"
error C2059: синтаксическая ошибка: )
error C2144: синтаксическая ошибка: перед "void" требуется ")"
error C2059: синтаксическая ошибка: )
error C2144: синтаксическая ошибка: перед "void" требуется ")"
error C2059: синтаксическая ошибка: )

Последний раз редактировалось NewLamer&Programer; 19.01.2013 в 21:18.
NewLamer&Programer вне форума Ответить с цитированием
Старый 19.01.2013, 22:18   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
error C2059: синтаксическая ошибка: ;
Ну а на какой строке нам угадать нужно? Это типо игра такая? "Угадай мелодию"?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2013, 22:38   #9
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну а на какой строке нам угадать нужно? Это типо игра такая? "Угадай мелодию"?
в моем компиляторе строки не нумеруются

ну вот так попробую показать:
Код:
void main()
{
	vvod(void); // error C2059: синтаксическая ошибка: ) error C2144: синтаксическая ошибка: перед "void" требуется ")"

	vivod(vvod(void)); //error C2059: синтаксическая ошибка: ) error C2144: синтаксическая ошибка: перед "void" требуется ")"

	obrabotka(vvod(void)); //error C2059: синтаксическая ошибка: ) error C2144: синтаксическая ошибка: перед "void" требуется ")"

	vivodresult(obrabotka(vvod(void))); //error C2059: синтаксическая ошибка: ) error C2144: синтаксическая ошибка: перед "void" требуется ")"

	getch();
}
п.с. это когда тыкаешь на ошибку, туда показывает

Последний раз редактировалось Stilet; 19.01.2013 в 22:55.
NewLamer&Programer вне форума Ответить с цитированием
Старый 19.01.2013, 22:41   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Уже лучше. Не нужно писать void при вызове функции, так как это не имеет смысла. Пишите просто vvod(). Другое дело, что это исправит текущие ошибки, но не глобальные.
Сразу замечания на будущее - Вы вызываете функцию ввода 4 раза, т.е. вывод, обработка и вывод результата будут от 3 разных массивов (теоретически - т.к. в Вашей программе неправильно возвращается массив).
У Stiletа массив объявлен в main, а у Вас в функции ввода - как только функция заканчивается, массива больше "не существует".
Или выделяйте память динамически и возвращайте адрес (и размер неплохо бы), либо создавайте массив в main, а в функции передавайте на него указатель.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 19.01.2013 в 22:47.
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лаба по С++ Ansermark Общие вопросы C/C++ 2 02.10.2012 18:49
Лаба Lyalichka Помощь студентам 7 01.01.2011 23:16
Лаба на с++ lubafffka Фриланс 1 25.05.2010 22:24
Лаба на C++ Suzukava Фриланс 2 14.09.2009 22:51