Форум программистов, компьютерный форум CyberForum.ru

Проверит программу,места ошибок указаны,нужно разобраться - C++

Восстановить пароль Регистрация
 
Sivilan
6 / 6 / 0
Регистрация: 17.03.2013
Сообщений: 66
03.10.2013, 16:15     Проверит программу,места ошибок указаны,нужно разобраться #1
Здравствуйте,нужна помощь,спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
const int M=50;
 
int main(int argc, char* argv[])
{
if (argc != 3)
{
printf("pravil'no: prog.exe input output\n");
exit(1);
}
 
int m,n,i,j,k,t,s;
FILE * f1= fopen(argv[1], "rt");
FILE * f2= fopen(argv[2], "wt");
fscanf(f1, "%d", &m);
fscanf(f2, "%d", &n);
 
s=(1+m)/2-1; // номер элемента находящегося посередине в "окне"
 
int *mas[n]; //для записи чисел из массива
int okno[M];
//int *okno=new int[m];//для записи чисел из окна
int *result=new int[n-m];// для записи медиан
 
for (i=0; i<n; i++)
{fscanf(f1, "%d", &mas[i]);}
 
for(i=0;i<n; i++ ){
for(t=0;t<m; t++)
{okno[t]=mas[i+t];} //запись M чисел из массива в массив "окна"(компилятор ругается)
 
for(j=i+1; j<m; j++){
if(okno[i]>okno[j]){
k = okno[j]; //сортировка чисел из "окна" по возрастанию
okno[j] = okno[i];
okno[i] = k;
}}
result[i]=okno[s];
}
 
for (i=0;i<n-m+1; i++)
fprintf(f2,"%d\t", result[i]);
 
//delete [] okno;
delete [] result;
delete [] mas;(здест тоже выдает ошибку)
fclose(f1);
fclose(f2);
return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 16:15     Проверит программу,места ошибок указаны,нужно разобраться
Посмотрите здесь:

Нужно разобраться C++
C++ Нужно исправть пару ошибок в програмном коде.
C++ Нужно разобраться с программой
Нужно разобраться в коде C++
C++ Нужно разобраться в коде
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
03.10.2013, 16:19     Проверит программу,места ошибок указаны,нужно разобраться #2
Ты не выделял память для mas, поэтому и удалять ты её не должен.
Да и вообще у тебя тут какая-то смесь не пойми чего..
Sivilan
6 / 6 / 0
Регистрация: 17.03.2013
Сообщений: 66
03.10.2013, 16:25  [ТС]     Проверит программу,места ошибок указаны,нужно разобраться #3
castaway, поподробнее пожалуйста
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
03.10.2013, 17:41     Проверит программу,места ошибок указаны,нужно разобраться #4
Мне с телефона не удобно. Я домой приду к 17:30 и поясню..

Добавлено через 1 час 4 минуты
int mas[100]; - определение статического массива. Его не надо удалять.
int *mas = new int [100]; - выделение динамической памяти. Его надо удалять через delete [] mas;
В обоих случаях доступ к элементам будет выглядеть одинаково: scanf( "%d", &mas[50] );, mas[34] = 123;

Переписывай код с соответствующими изменениями и посмотрим что получится.
Yandex
Объявления
03.10.2013, 17:41     Проверит программу,места ошибок указаны,нужно разобраться
Ответ Создать тему
Опции темы

Текущее время: 13:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru