PDA

Показать полную графическую версию : Неправильно работает код.


pashazt
31-10-2012, 14:48
Задание : переставить первые М элементов в конец массива. Код некорректно работает.


#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<locale.h>
#include<iostream>

main()
{
setlocale (LC_ALL, "Rus");

int N,i,s,M;
int x[100];

printf("Введите количество элементов массива N=");
scanf("%d",&N);

s=0;

printf("Введите массив элементов s: ");
for(i=1; i<=N; i++)

scanf("%d",&x);
printf("Введите количество элементов массива, которые будут переставлены в конец M=");
scanf("%d",&M);

printf("Преобразованый массив имеет вид : ");

for(i=N-M;i<N;i++)
{
x[i]=x[N-i];
printf("%d ",x[i]);
}
getch();
return 0;
}

Beyound
31-10-2012, 19:14
все потому что должно быть не x[i]=x[N-i]; а x[i]=x[i-(N-M)]
направление перебора элементов неверное

pashazt
31-10-2012, 20:01
Всё-равно неправильно работает.
Ввожу данные:
N=6
s : 1 -2 3 4 -5 6
M=3
Выдаёт бред.(6104032 1 -2) - вот эти три числа.

Beyound
01-11-2012, 17:36
извини, не заметил еще одну ошибку
вместо for(i=1; i<=N; i++) напиши for(i=0; i<N; i++)
элементы массива всегда нумеруются с 0, т.е. первым элементом массива будет элемент x[0] и соответственно 6-ой элемент - x[5], так как первому элементу ты явно не задал значение то он берет то, что там есть в памяти - т.е. сущий бред. это очень характерный признак - если среди чисел какаято каждый раз разная фигня, то значит проблема с адресацией




© OSzone.net 2001-2012