Помогите найти ошибку в Коде (C++)

6 декабря 2009

Заданы два массива{xi} и {yi} (i=от 1 до n).
Сформировать массив{cj} по правилу
cj=yi+xi,если xi>yi
cj=xi*max{yi} если xi<yi
пары xi=yi в формировании нового массива не участвуют.

#include <iostream.h>
#include <conio.h>
#define SIZE 255
using namespace std;
int main(void)
{
int i=0,j=0,n=0,max=0;
int X[SIZE],Y[SIZE],C[SIZE];
cout<<"Vvedite razmernost' massivov"<<endl;
cin>>n;
for (i=0;i<n;i++)
{
cout<<"Vvedite X["<<i<<"]: ";
cin>>X[i];
}
for (i=0;i<n;i++)
{
cout<<"Vvedite Y["<<i<<"]: ";
cin>>Y[i];
max=Y[0];
if (Y[i]>max)
max=Y[i];
}
for (j=0;j<n;j++)
{

if(X[j]>Y[j])
C[j]=(Y[j]+X[j]);
if(X[j]<Y[j])
C[j]=X[j]*max;
if(X[j]==Y[j])
C[j]=0;
}
cout<<"Polychivshiysya massiv:"<<endl;
for (j=0;j<n;j++)
{
cout<<C[j]<<" ";
}
getch();

и задача два:задан в массиве вещественных чисел {aij} i и j от т1 до n, упорядочить по убыванию столбец,сумма элементов которого больше заданного числа B

#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>

void main(){

int n,b;
cout<<"введите количество элементов в строке и столбце";
cin>>n;
int a[][];
a=new int [n]; //создание массива а (динамического)
for (int i=0;i<n;i++) for (int i=0;i<n;i++)
for (int j=0;i<n;j++)
cout<<a[i][j];
int a[i]=new int [n];

for (int i=0;i<n;i++)//заполнение
for (int j=0;i<n;j++)
cin>>a[i][j];

for (int i=0;i<n;i++)
for (int j=0;i<n;j++)
cout<<a[i][j];

cout<<"введите B";
cin>>b;

int B[]=new int [n]
for (int i=0;i<n;i++)//заполнение B
{B[i]=0;
for (int j=0;i<n;j++)
B[i]+=a[j][i]
}

double х; int j;//сортировка
for ( int i=1; i < m; i++) {
х = B[i];
for ( int k=0; k < n; k++)
c[k]=a[k][i];
for ( j=i-1; j>=0 && B[j] < х; j--)
{B[j+1] = B[j];
for ( int k=0; k < n; k++)
a[k][j+1]=a[k][j];}
B[j+1] = х;
for ( int k=0; k < n; k++)
a[k][j+1]=c[k];
}

for (int i=0;i<n;i++)
for (int j=0;i<n;j++)
cout<<a[i][j];
}

заранее всем спасибо


10 ответов в теме “Помогите найти ошибку в Коде (C++)”

  1. 1) Александр Шадрин ответил:

    Задача №1:
    for (i=0;i<n;i++)
    {
    cout<<"Vvedite Y["<<i<<"]: ";
    cin>>Y[i];
    max=Y[0];
    if (Y[i]>max)
    max=Y[i];
    }
    тут ошибка, вынеси max = Y[0] за пределы цикла for, а то у тебя получается каждый раз при итерации цикла переменная max становится равной первому элементу массива, и ты всё время сравниваеш только с первым элементом, короче надо так:
    for (i=0;i<n;i++)
    {
    cout<<"Vvedite Y["<<i<<"]: ";
    cin>>Y[i];
    }
    max=Y[0];
    for (i=0;i<n;i++)
    {
    if (Y[i]>max)
    max=Y[i];
    }

  2. 2) Александр Шадрин ответил:

    Во второй задаче я чего то недопонимаю , вот вы просите юзверя ввести b:
    cout<<"введите B";
    cin>>b;
    А где дальше вы сравниваете сумму элементов ваших столбцов массива с этим самым b? А по задаче должны: "упорядочить по убыванию столбец, сумма элементов которого больше заданного числа B"

  3. 3) Геннадий Майоров ответил:

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

  4. 4) Александр Могильнер ответил:

    "for (int i=0;i<n;i++) for (int i=0;i<n;i++)
    for (int j=0;i<n;j++)"

    В чём вся сермяжная истина сего куска кода?

  5. 5) Александр Могильнер ответил:

    "for (int i=0;i<n;i++) for (int i=0;i<n;i++)
    for (int j=0;i<n;j++)
    cout<<a[i][j];
    int a[i]=new int [n];"

    И вообще бред это: даже не смотря на тот непонятный кусок с циклами, полностью отсутствуют операторные скобки, не отводится память под массив, идёт чтение из памяти не принадлежащей программе. Дальше даже разбираться неохота.

    Итог: программу надо отрабатывать в дебаггере автору темы, иначе даже не поймёт отчего тут ошибки.

  6. 6) Геннадий Майоров ответил:

  7. 7) Viktor Krylovets ответил:

    "Помогите найти ошибку в Коде"
    - А Debugger то зачем???))

  8. 8) Геннадий Майоров ответил:

    компилятора под рукой нет.

  9. 9) Александр Могильнер ответил:

    А нас учили, что бОльшую часть ошибок можно отловить дебаггеря прогу по бумажке. И выполнять не так как тебе хотелось бы, чтобы она работала, а как она реально написана. Попробуй, может поможет.
    Да и что за отмазка в наши дни: "компилятора под рукой нет"? Бесплатные компиляторы: GNU GCC (g++) + текстовый редактор emacs + дебаггер cgdb или xgdb ( я молчу про gdb), Microsoft Visual C++ 2008/2010 Express Edition, на любом форуме можно нарыть ссылку на олдскульный Borland C++ 3.1. Это только то, что пришло в голову моментально.

  10. 10) Viktor Krylovets ответил:

    Геннадий, тогда ясно)

Добавить ответ

Оставить комментарий