Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Неправильно работает код. (http://forum.oszone.net/showthread.php?t=245882)

pashazt 31-10-2012 14:48 2015797

Неправильно работает код.
 
Задание : переставить первые М элементов в конец массива. Код некорректно работает.

Код:

#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 2015979

все потому что должно быть не x[i]=x[N-i]; а x[i]=x[i-(N-M)]
направление перебора элементов неверное

pashazt 31-10-2012 20:01 2016001

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

Beyound 01-11-2012 17:36 2016648

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


Время: 00:28.

Время: 00:28.
© OSzone.net 2001-