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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2013, 10:22   #1
russoof
Новичок
Джуниор
 
Регистрация: 08.12.2013
Сообщений: 6
По умолчанию Целочисленная матрица

Дана целочисленная матрица A(M,N). Элемент A(i, j) назовем “особым”, если он делится хотя бы на одно число Фибоначчи, большее некоторого заданного значения Р. Заменить каждый особый элемент на ближайшее большее простое число.
Чи́сла Фибона́ччи — элементы числовой последовательности в которой каждое последующее число равно сумме двух предыдущих чисел. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946

Вот мой код который у меня не получается отладить

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

int main()
{
int a [10][10],i,j,m,n,p;
int f,d,f0,f1,f2,z;
printf("vvedite m n");
scanf("%d%d",&m,&n);
printf("\n vvedite elementy\n");
for (i=0;i<m;i++)
for (j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("vvod zakonchen");
printf("\n vvedite p \n");
scanf("%d",&p);
for (i=0;i<m;i++)
for (j=0;j<n;j++)
for (d=p+1;d<=a[i][j];d++)
if(a[i][j]%d==0)
{f0=1;f1=1;
while (f1<d)
{f2=f0+f1;
f0=f1;f1=f2;}
if (f1==d)
{f=1;z=a[i][j]+1;
while (f)
{q=1;
for (d=2;d<=z/2;d++)
if (z%d==0)
q=0;
if(q) {a[i][j]=z;f=0;}
}
}
if(f==0) break;
}
printf ("matrica");
for (i=0;i<m;i++){
for (j=0;j<n;j++)
printf("%6d",a[i][j]);
printf("\n");}
return 0;
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 10.12.2013 в 11:08.
russoof вне форума Ответить с цитированием
Старый 10.12.2013, 11:17   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Что происходит при выполнении кода?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 10.12.2013, 11:22   #3
russoof
Новичок
Джуниор
 
Регистрация: 08.12.2013
Сообщений: 6
По умолчанию

сразу хочу сказать , что я новичок и пока только учусь.
он пишет ошибки: переменная f не идентифицируется, что где то стоит лишняя фигурная скобка } и из-за этого программа завершается в каком то другом месте.
russoof вне форума Ответить с цитированием
Старый 10.12.2013, 11:39   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Я понимаю компилятор. Как все сложно...
Скажите вот вы создаете массив 10 на 10, а зачем вводите m и n? У вас ведь известен размер массива = 10.
На мой взгляд у Вас много ненужных переменных, создание которых вообще можно избежать.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 10.12.2013 в 11:58.
Bugrimov вне форума Ответить с цитированием
Старый 10.12.2013, 12:08   #5
russoof
Новичок
Джуниор
 
Регистрация: 08.12.2013
Сообщений: 6
По умолчанию

я делал 10 на 10 как максимально-возможную размерность , но что бы можно было ввести и 3-7, 9-4
russoof вне форума Ответить с цитированием
Старый 10.12.2013, 12:20   #6
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

А если вы введете m = 20...??? То выход за пределы массива? Так?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 10.12.2013, 12:34   #7
russoof
Новичок
Джуниор
 
Регистрация: 08.12.2013
Сообщений: 6
По умолчанию

вероятно, да.
russoof вне форума Ответить с цитированием
Старый 10.12.2013, 12:41   #8
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Сделайте например так
Код:
#define SIZE 10
...
...
int A[SIZE][SIZE] = {0};
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 10.12.2013, 13:23   #9
russoof
Новичок
Джуниор
 
Регистрация: 08.12.2013
Сообщений: 6
По умолчанию

и после равно, в фигурных скобках вводим константы, я правильно понял
russoof вне форума Ответить с цитированием
Старый 10.12.2013, 14:16   #10
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Вы вводите значения массива в ручную? Так?
Может лучше заполнять случайными числами???

Заполнение и вывод массива:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>

#define SIZE 10

int main()
{
	int arr[SIZE][SIZE];
	int i, j;
	
	setlocale(0, "rus");
	
	srand((unsigned)time(NULL));
	printf("\n Массив:\n");
	for(i = 0; i < SIZE; i++) {
		for(j = 0; j < SIZE; j++) {
			arr[i][j] = rand()%40-30;
			printf("%3d", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 10.12.2013 в 14:28.
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Целочисленная матрица StudentMarat Помощь студентам 1 17.10.2011 16:33
Целочисленная матрица новичок39 Помощь студентам 0 13.06.2011 19:35
Целочисленная матрица Alex Dentz Помощь студентам 3 30.11.2010 12:03
Дана целочисленная матрица Катюшка_92 Помощь студентам 6 03.06.2010 09:20
целочисленная матрица chillin Помощь студентам 1 03.05.2009 13:56