Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Потоковый ввод и ввод с клавиатуры. Рекурсия

Ответить
Настройки темы
C/C++ - Потоковый ввод и ввод с клавиатуры. Рекурсия

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Программа должна по выбору пользователя осуществлять ввод исходной матрицы с клавиатуры или из файла. Для этого программа должна содержать две соответствующие функции, указатель на одну из которых необходимо передавать в функцию для вычисления элементов массива Х. Данная функция должна вызывать через указатель одну из функций ввода элементов матрицы, производить вычисление элементов массива X в соответствии с заданием и возвращать указатель на этот массив. Кроме того, программа должна содержать функцию для вывода на экран и в файл исходной матрицы и результирующего массива, а также рекурсивную функцию определения в соответствии с заданием величины Y.
В программе не должно быть глобальных переменных.
Вот моя задача: Дана матрица А(5х5). Определить массив Х из 5 элементов, каждый из которых равен 1, если сумма модулей элементов соответствующего столбца больше наибольшего по модулю элемента матрицы и –1 в противном случае. Определить величину Y, как сумму положительных элементов первой строки матрицы, расположенных после первого нулевого элемента.
я попыталась с этими потоками разобраться вот что получилось, правда до конца дописать так и не смогла там ошибка
Код: Выделить весь код
#include<stdio.h>
#include <conio.h>
#include<locale.h>
#include <math.h>
#define n 3
void input_keyboard(int a[n][n])//Ввод с клавиатуры
{
	int i,j;
    printf("Введите элементы матрицы А: \n");
	for (int i=0; i<n; i++)
		for (int j=0; j<n; j++)
			scanf ("%d", &a[i][j]);
}
void input_file(int(*a)[n])//Ввод из файла
{	
	FILE *fp;
	fp=fopen("lab3.txt","r");
	if (fp)
	{
		for (int i=0;i<n; i++)
			for(int j=0; j<n; j++)
				fscanf(fp, "%d",&a[i][j]);
		fclose(fp);
	}
}
int form_x(int a[n][n], void (*pf)(int [n][n]))//формирую массив х(нахожу максимум сумму столбцов, и сравнить!!!!)
{
	int sum[n], max,i,j;
	static int x[n];
	pf(a);
	max=abs(a[0][0]);//нахождение максимального элемента матрицы
	for ( i=0; i<n; i++)
		for ( j=0; j<n; j++)
			if (abs(a[i][j]) > max)
				max=abs(a[i][j]);
	for ( j=0; j<n; j++)//сумма элеменов столбцов
	{
		sum[j]=0;
	for ( i=0; i<n; i++)
		sum[j]=sum[j]+a[i][j];
	sum[j]=abs(sum[j]);
	}
	for ( j=0; j<n; j++)
		if (sum[j]>max) x[j]=1;
		else x[j]=-1;
		return *x;
}
void output(const int x[], const int a[][n] )
{
   int i,j;
   printf("Матрица А:\n");
   for (i=0;i<n;i++)
   {
     for (j=0;j<n;j++)
       printf("%5d",a[i][j]);
       printf("\n");
   }
printf("Массив Х:\n");
for (j=0;j<n;j++)
printf("%5d",x[j]);
printf("\n");
}
int main()
{
setlocale(LC_CTYPE,"");
int a[n][n], x[n], c;
void (*pfunc)(int [n][n]);
do
{
printf("Ввод матрицы:\n1 - с клавиатуры\n2 - \
из файла\n");
scanf("%d",&c);
}
while (c!=1 && c!=2);
// Присваивание указателю адреса одной из функций:
switch (c)
{
case 1: pfunc=&input_keyboard;
break;
case 2: pfunc=&input_file;
}
output(form_x(a,x,pfunc),a);
_getch();
}

Отправлено: 20:49, 09-05-2013

 

Ветеран


Сообщения: 2029
Благодарности: 704

Профиль | Отправить PM | Цитировать


Хорошо, уговорили. Всё-таки отвечу еще раз.

Цитата lerenia:
и отвечаете в теме С/С++ »
Если ничего другого нет, читать Википедию до полного просветления:
Цитата Си (язык программирования):
Си (англ. C) — стандартизированный процедурный язык программирования, разработанный в 1969—1973 годах сотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX.
Вообще говоря, стыдно не знать. Вы, вероятно, полагали, что его в 1971 для MS-DOS выпустили? Разочарую - Билл Гейтс в то время в школу ходил.

Цитата lerenia:
изменили амперсант на указатель (не понимаю вообще смысл этого действия ) »
В школе это Вам называли "передачей параметра по ссылке". Кстати, в Вашей программе переменная sum как раз и имеет тип указателя на int.

Цитата lerenia:
у меня компилятор все равно выдает ошибки »
Что могу сказать? Значит плохой у Вас компилятор. Предложенный мной текст, за исключением, разумеется, комментариев, полностью соответствует стандарту ANSI.
Замените формат Ваших комментариев с "// комментарий" на традиционный "/* комментарий */" и если после этого компилятор будет выдавать ошибки, то выбросьте его на помойку.
Максимум, в этой программе компилятор может выдать одно предупреждение (не ошибку!) об отсутствии оператора return в функции recurs.

-------
Господа! Убедительная просьба не обращаться за консультациями в ЛС. Поверьте, создать ветку в соответствующем разделе форума гораздо эффективнее.


Последний раз редактировалось AMDBulldozer, 11-05-2013 в 19:11.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:03, 11-05-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата lerenia:
А мистер deviance, вообще назвал мою работу плагиатом и вообще не увидел ошибок сказал что там все правильно, каждый раз когда пишу на это форуме либо указывают на тупость либо хамят, это местная фишка этого форума? »
Почему вы не хотите разобраться, когда вам нормально люди обьясняют?

Последний раз редактировалось Tramvaichik, 11-05-2013 в 22:50.


Отправлено: 22:44, 11-05-2013 | #12


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата lerenia:
поэтому я и написал »
Цитата lerenia:
я делала »
Так все таки как верно то?

lerenia, дабы не создалось ложного впечатления о форуме и отвечающих:
Ваш вопрос каждый из отметившихся здесь может решить за 15 минут. НО! Мы не решаем за вас ваши задачи, т.к. таких вопросов в день по десятку, а мы не альтруисты сидеть и выполнять за вас ваши лабораторные и прочее. Мы можем помочь, направить на верный ответ, указать на ошибку и т.п. Но после того, как был выложен хотя бы компилирующийся код AMDBulldozer, я думаю надо задуматься о корректной работе вашего ПО.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 16:50, 12-05-2013 | #13


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Delirium:
Ваш вопрос каждый из отметившихся здесь может решить за 15 минут. НО! Мы не решаем за вас ваши задачи »
Я не просила решить, я просила помочь, я пыталась, делала, но в первых же сообщениях на меня нагнали что это плагиат и оказывается код у меня не компилируется, хотя наверное именно по этой причине я и попросила помощи!
Цитата Delirium:
Так все таки как верно то? »
Это столь существенная опечатка?
Цитата Delirium:
я делала »
Здесь скорее любят показывать свое превосходство, нежели помогать

Цитата Tramvaichik:
Почему вы не хотите разобраться, когда вам нормально люди обьясняют? »
Потому что здесь не объясняют, а репетитор довольно дорогое удовольствие

Отправлено: 09:03, 13-05-2013 | #14


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


lerenia, Вам указали на ошибки в коде. Вам сделали проект, который хотя бы компилируется без ошибок. Вам указали, где ошибки. Что еще вы считаете за помощь?
Вы проверили предложенный код? Сменили компилятор? Увидели ошибки? Если да, то в чем загвоздка. Если же нет, то ...

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 14:07, 15-05-2013 | #15



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Потоковый ввод и ввод с клавиатуры. Рекурсия

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Ввод с клавиатуры значения в переменную river123 Скриптовые языки администрирования Windows 8 28-05-2018 00:17
Разное - [решено] Массивы. Ввод параметра для строк и столбцов с клавиатуры,а заполнение матрицы random lenaustkz84 Программирование и базы данных 13 19-01-2012 09:03
C/C++ - [решено] Потоковый ввод/вывод котвася Программирование и базы данных 4 06-08-2010 10:39
C/C++ - Ввод формул Doom77 Программирование и базы данных 7 05-11-2009 00:49
Ввод строки с клавиатуры DJ@XON Программирование в *nix 1 06-07-2009 22:25




 
Переход