sakarprofosor Ответов: 3

Я написал этот код, но не работал над ним.


Create an array A and initialize it as: [13,8,17,11,14,63]
Declare an integer N and initialize it with -3.
Pass the array A and the variable N to a function like void func (int* A, int* N)
(N will be passed as a pointer. Your function will use the adress of N to reach the value -3.)
Inside the function, multiply N with every the elements of A.
Print the results of A.
Result should be like:
A a r ra y a t b egi n ni ng
13 8 17 11 14 63
A a r ra y a f t e r c a l l i n g f u n c ti o n
−39 −24 −51 −33 −42 −189


Что я уже пробовал:

#include <stdio.h>


int multiply (int *N,int A[]);

main()
{
	int i,*N,n;
	int A[6]={13,8,17,11,14,63};
	n=-3;
	*N=&n;

	
	
	
	
		printf("A array at the beginning:\n ");
		for(i=0;i<6;i++)
		{
		printf("%d\t",A[i]);	
		}
	
		
		printf("\n A  array after calling function: \n");
		
		multiply( *N,A);
	
	return 0;
}
int multiply (int *N,int A[])
{
	int i,n;
	A[6] = 13,8,17,11,14,63;
	n=-3;
	*N=&n;


	for(i=0;i<6;i++)
	{
			printf("%d\t",A[i]*N);
	}
	
	return 0;
	
}

[no name]

И вы ожидаете, что мы сделаем что - то с вашим кодом дампа?

sakarprofosor

в чем заключается моя ошибка и как я могу ее исправить?

[no name]

- Какой вопрос? Здесь нет никаких вопросов. Вы просто бросили свой код сюда без каких-либо объяснений.

jeron1

Вы не инициализируете указатель N ни к чему.

sakarprofosor

но пока это не сработало.

jeron1

Попробовать это
N = & n;

sakarprofosor

я попробовал и выиграл, спасибо!

jeron1

Хорошо, надеюсь, ты знаешь почему.

sakarprofosor

Я читаю так много вопросов и ответов, что, наверное, понимаю, почему и как

3 Ответов

Рейтинг:
1

KarstenK

вы никогда не сохраняете результат в массиве. Может быть, этот код поможет:

int multiply (int *N,int A[])
{
	int i;
	A[6] = 13,8,17,11,14,63;
 
	for(i=0;i<6;i++)
	{
            printf("%d\t",A[i]*N[i]);//only multiply
           N[i] = N[i]*A[i];//access each member AND not the first and set the result
            printf("%d\t",N[i]);
	}
	
	return 0;
}


sakarprofosor

@KarstenK снова не сработал

Рейтинг:
1

Patrice T

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
1

sakarprofosor

#include <stdio.h>


int multiply (int* N,int A[]);

main()
{
	int i,*N,n;
	int A[6]={13,8,17,11,14,63};
	n=-3;
	N=&n;

	
	
	
	
		printf("A array at the beginning:\n ");
		for(i=0;i<6;i++)
		{
		printf("%d\t",A[i]);	
		}
	
		
		printf("\n A  array after calling function: \n");
		
		multiply( N,A);
	
	return 0;
}
int multiply (int* N,int A[])
{
	int i,n;
	A[6] = 13,8,17,11,14,63;
	n=-3;
	N=&n;


	for(i=0;i<6;i++)
	{
			printf("%d\t",*N*A[i]);
	}
	
	return 0; // and it works !!! thanks !!
	
}


jeron1

и что означает этот пост?

sakarprofosor

мой последний пункт, код, который работает

jeron1

Ах, как правило, можно было бы изменить первоначальный пост, отметив это.