Перейти к содержимому

Фото
- - - - -

найдите ошибку plz..


  • Вы не можете создать новую тему
  • Please log in to reply
7 ответов в этой теме

#1 desert_rose

desert_rose
  • Пользователь
  • 25 сообщений
  • Откуда:Украина,Крым,Симферополь

Отправлено 09 Декабрь 2006 - 21:25

Даны целые числа А1, А2, А3, ., Ап. Все члены последовательности заменить целой частью среднего арифметического всех членов последовательности, остальные члены оставить без изменения. Если в последовательности несколько членов со значением Min (А1, А2, А3, ... Ап),то заменить последний по порядку.
Не могу понять почему у меня при запуске пишет,что минимальный элемент = 0.
я еще начинающая, и надеюсь помощи от вас...
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
int i, min, sum, m , A, S, N, sr;

int *a;
void main()
{

cout << "\n vvedite koli4estvo 4isel N v posledovatel'nosti An: " << "\n N = ";
cin >> N;
a = (int*)calloc(N, sizeof(int));
cout << "\n vvedite 4isla posledovatel'nosti An: \n";

min = a[0];
for( i = 0; i < N; i++)
{
cout << "A" << i + 1 << " ";
cin >> A;
a[i] = A;
if (min > a[i])
{
min = a[i];
m = i;
}
}

cout << "\n minimal'noe 4islo = " << min;
cout << "\n resul'tat: \n";

for (i = 1; i < m; i++)
{
sr = sr / N;

a[i] = sr;
}
for( i = 0; i < N; i++)
{
cout << "A" << i + 1 << " " << a[i] << endl;
}
getch();
free(a);
}
  • 0
Why to walk when you can run? // Iacoca Lee

#2 Cryptoboy

Cryptoboy
  • Пользователь
  • 280 сообщений

Отправлено 09 Декабрь 2006 - 23:54

Потому что эта строчка
a = (int*)calloc(N, sizeof(int));

создает массив из н элементов и заполняет его нулями..
поэтому когда ты пишешь
min = a[0];
min равен нулю, (потому что a[0] = 0)

потом ты наверное вводишь все положительные числа и вот и получается , что min остается равным 0 после конца цикла.
  • 0

#3 desert_rose

desert_rose
  • Пользователь
  • 25 сообщений
  • Откуда:Украина,Крым,Симферополь

Отправлено 10 Декабрь 2006 - 20:04

а,понятно, спасибо!:)
  • 0
Why to walk when you can run? // Iacoca Lee

#4 desert_rose

desert_rose
  • Пользователь
  • 25 сообщений
  • Откуда:Украина,Крым,Симферополь

Отправлено 11 Декабрь 2006 - 15:08

вот переделанная версия, но у меня почему-то тоже не срабатывает.

#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
int i, min, sum, m , A, S, N, sr;
int *a;
void main()
{

cout << "\n vvedite koli4estvo 4isel N v posledovatel'nosti An: " << "\n N = ";
cin >> N;

cout << "\n vvedite 4isla posledovatel'nosti An: \n";

min = a[o];
for( i = 0; i < N; i++)
{
cout << "A" << i + 1 << " ";
cin >> A;
a[i] = A;
if (min < a[i])
{
min = a[i];
m = i;
}
}
cout << "\n minimal'noe 4islo = " << min;
cout << "\n resul'tat: \n";
for (i = 0; i < m; i++)
sum += a[i];
for (i = 1; i < m; i++)
sr = sum / N;
a[m] = sr;

for( i = 0; i < N; i++)
cout << "A" << i + 1 << " " << a[i] << endl;
getch();
free(a) ;
}


вот переделанная версия, но у меня почему-то тоже не срабатывает.

#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
int i, min, sum, m , A, S, N, sr;
int *a;
void main()
{

cout << "\n vvedite koli4estvo 4isel N v posledovatel'nosti An: " << "\n N = ";
cin >> N;

cout << "\n vvedite 4isla posledovatel'nosti An: \n";

min = a[o];
for( i = 0; i < N; i++)
{
cout << "A" << i + 1 << " ";
cin >> A;
a[i] = A;
if (min < a[i])
{
min = a[i];
m = i;
}
}
cout << "\n minimal'noe 4islo = " << min;
cout << "\n resul'tat: \n";
for (i = 0; i < m; i++)
sum += a[i];
for (i = 1; i < m; i++)
sr = sum / N;
a[m] = sr;

for( i = 0; i < N; i++)
cout << "A" << i + 1 << " " << a[i] << endl;
getch();
free(a) ;
}
  • 0
Why to walk when you can run? // Iacoca Lee

#5 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 11 Декабрь 2006 - 15:23

min = a[o];

ну и причем тут буква О?

потом сначало было
if (min > a[i]) (верно), а сейчас if (min < a[i])
  • 0

#6 Cryptoboy

Cryptoboy
  • Пользователь
  • 280 сообщений

Отправлено 11 Декабрь 2006 - 16:10

самое простое, поставь в первой версии
min=100000000 (че нить очень большое)
не красиво, но работать будет :)
  • 0

#7 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 11 Декабрь 2006 - 20:23

в начало цикла надо добавить
if(!i) {
min = A;
}

типа берем за меньшее первое введенное число, если потом будет меньше, то изменим. Такой подход более элегантен:)
  • 0

#8 desert_rose

desert_rose
  • Пользователь
  • 25 сообщений
  • Откуда:Украина,Крым,Симферополь

Отправлено 13 Декабрь 2006 - 13:16

всем спасибо!все работает отлично!:):):):):)
  • 0
Why to walk when you can run? // Iacoca Lee