|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Потоковый ввод и ввод с клавиатуры. Рекурсия |
|
C/C++ - Потоковый ввод и ввод с клавиатуры. Рекурсия
|
Новый участник Сообщения: 10 |
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Хорошо, уговорили. Всё-таки отвечу еще раз.
Цитата lerenia:
Цитата Си (язык программирования):
Цитата lerenia:
Цитата lerenia:
Замените формат Ваших комментариев с "// комментарий" на традиционный "/* комментарий */" и если после этого компилятор будет выдавать ошибки, то выбросьте его на помойку. Максимум, в этой программе компилятор может выдать одно предупреждение (не ошибку!) об отсутствии оператора return в функции recurs. |
||||
------- Последний раз редактировалось AMDBulldozer, 11-05-2013 в 19:11. Отправлено: 19:03, 11-05-2013 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Цитата lerenia:
|
|
Последний раз редактировалось Tramvaichik, 11-05-2013 в 22:50. Отправлено: 22:44, 11-05-2013 | #12 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата lerenia:
Цитата lerenia:
lerenia, дабы не создалось ложного впечатления о форуме и отвечающих: Ваш вопрос каждый из отметившихся здесь может решить за 15 минут. НО! Мы не решаем за вас ваши задачи, т.к. таких вопросов в день по десятку, а мы не альтруисты сидеть и выполнять за вас ваши лабораторные и прочее. Мы можем помочь, направить на верный ответ, указать на ошибку и т.п. Но после того, как был выложен хотя бы компилирующийся код AMDBulldozer, я думаю надо задуматься о корректной работе вашего ПО. |
||
------- Отправлено: 16:50, 12-05-2013 | #13 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Цитата Delirium:
Цитата Delirium:
Цитата Delirium:
Цитата Tramvaichik:
|
||||
Отправлено: 09:03, 13-05-2013 | #14 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать lerenia, Вам указали на ошибки в коде. Вам сделали проект, который хотя бы компилируется без ошибок. Вам указали, где ошибки. Что еще вы считаете за помощь?
Вы проверили предложенный код? Сменили компилятор? Увидели ошибки? Если да, то в чем загвоздка. Если же нет, то ... |
------- Отправлено: 14:07, 15-05-2013 | #15 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|