Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 23:06   #1
Kristino4ka
Пользователь
 
Регистрация: 25.05.2012
Сообщений: 12
Вопрос Не могу найти ошибку (С++)

Здравствуйте! Пожалуйста помогите найти ошибку в коде С++
Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
	srand (time(NULL));
	int i,j,n,m;
	int A[100][100];
	setlocale (LC_ALL, "Russia");
	cout<<"Введите количество строк:"; cin>>n;
	cout<<"Введите количество столбцов:"; cin>>m;
	{
	for (i=0;i<n;i++)
	for (j=0;j<m;j++)
	A[i][j]=rand()%50;
	}
    for (int i = 0; i < n; i++)
 {
    for(int j = 0; j < m; j++)
    cout << A[i][j] << " ";
    cout << endl;
 }
	
	int P[10];
	int k;
	int sum;
{
    
	for (j=0;j<m;j++)
	for (k=0;k<m;k++)
{
	for (i=0;i<n;i++)
	if (A[i][j]%2!=0)
	sum=sum+A[i][j];
	P[k]=sum;
	cout << P[k] << " ";
	sum=0;
}
}
	
    cout << endl;
	system("pause");
	return 0;
}
Вот само задание: Вычислить сумму нечётных элементов для каждого столбца, результаты занести в одномерный массив. Число строк и столбцов вводится с клавиатуры. Элементы массива заполняются с помощью генератора случайных чисел.
Вот что выходит:
Безымянный.JPG
Не понимаю откуда берётся первое число и почему копирует третье....
Kristino4ka вне форума Ответить с цитированием
Старый 14.12.2012, 23:15   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цикл for (k=0;k<m;k++) определенно лишний. Ну и еще пару строчек поправил. Вроде бы правильно теперь.
Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
	srand (time(NULL));
	int i,j,n,m;
	int A[100][100];
	setlocale (LC_ALL, "Russia");
	cout<<"Введите количество строк:"; cin>>n;
	cout<<"Введите количество столбцов:"; cin>>m;
	{
	for (i=0;i<n;i++)
	for (j=0;j<m;j++)
	A[i][j]=rand()%50;
	}
    for (int i = 0; i < n; i++)
 {
    for(int j = 0; j < m; j++)
	cout << A[i][j] << " ";
	cout << endl;
 }

	int P[10];
	int k;
	int sum=0;
{

	for (j=0;j<m;j++)
//	for (k=0;k<m;k++)
{
	for (i=0;i<n;i++)
	if (A[i][j]%2!=0)
	sum=sum+A[i][j];
	P[k]=sum;
	cout << P[k] << " ";
	k++;
	sum=0;
}
}

	cout << endl;
	system("pause");
	return 0;
}
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 14.12.2012, 23:21   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

/*опоздал*/
Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    srand (time(NULL));
    int i,j,n,m;
    setlocale (LC_ALL, "Russia");
    cout<<"Введите количество строк:"; cin>>n;
    cout<<"Введите количество столбцов:"; cin>>m;
    
    int A[n][m];
    int P[m];
    
    for (i=0;i<n;i++)
        for (j=0;j<m;j++)
            A[i][j]=rand()%50;
            
    for (int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++)
            cout << A[i][j] << " ";
    cout << endl;
    }
 
    for (j=0;j<m;j++) {
        P[j] = 0;
        for (i=0;i<n;i++)
            if (A[i][j]%2!=0)
                P[j] += A[i][j];
        cout << P[j] << " ";
    }
    cout << endl;
    system("pause");
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.12.2012, 01:59   #4
Kristino4ka
Пользователь
 
Регистрация: 25.05.2012
Сообщений: 12
Восклицание

Продолжение этого же задания:
2) Поменять местами строки 1 и 2, 3 и 4, 5 и 6 и т.д.
вот я продолжила тот код
Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
	srand (time(NULL));
	int i,j,n,m;
	int A[100][100];
	setlocale (LC_ALL, "Russia");
	cout<<"Введите количество строк:"; cin>>n;
	cout<<"Введите количество столбцов:"; cin>>m;
	{
	for (i=0;i<n;i++)
	for (j=0;j<m;j++)
	A[i][j]=rand()%50;
	}
    for (int i = 0; i < n; i++)
 {
    for(int j = 0; j < m; j++)
	cout << A[i][j] << " ";
	cout << endl;
 }

	int P[10];
	int k=0;
	int sum=0;
{

	for (j=0;j<m;j++)

{
	for (i=0;i<n;i++)
	if (A[i][j]%2!=0)
	sum=sum+A[i][j];
	
	P[k]=sum;
	cout << P[k] << " ";
	k++;
	sum=0;
}
}

	cout << endl;
	int K[10];
	int p;
	{
	for (i=0;i<n;i+=2)
		{
			for(j=0;j<m;j++)
				for (p=0;p<m;p++)
					K[p]=A[i][j];
			A[i][j]=A[i+1][j];
			A[i+1][j]=K[p];
		}
	}
	    for(i=0;i<n;i++)
		{
			for(j=0;j<m;j++)
				cout<<A[i][j]<<" ";
			cout<<endl;
		}
	system("pause");
	return 0;
}
в итоге выводит тот же самый массив
Kristino4ka вне форума Ответить с цитированием
Старый 15.12.2012, 02:14   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int
main()
{
    srand (time(NULL));
    int n, m;
    setlocale (LC_ALL, "Russia");
    cout << "Введите количество строк:";
    cin >> n;
    cout << "Введите количество столбцов:";
    cin >> m;
    int A[n][m];
    int P[m];
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            A[i][j] = rand() % 50;
        }
    }
    cout << "Массив:" << endl;       
    for (int i = 0; i < n; ++i) {
        for(int j = 0; j < m; ++j) {
            cout << A[i][j] << " ";
        }
        cout << endl;
    }
    cout << "Сумма в столбцах: " << endl;
    for (int j = 0; j < m; ++j) {
        P[j] = 0;
        for (int i = 0; i < n; ++i) {
            if (A[i][j] % 2 != 0) {
                P[j] += A[i][j];
            }
        }
        cout << P[j] << " ";
    }
    cout << endl;
    for (int i = 0; i < n - 1; i += 2) {
        for (int j = 0; j < m; ++j) {
            int tmp = A[i][j];
            A[i][j] = A[i + 1][j];
            A[i + 1][j] = tmp;
        }
    }
    cout << "Измененный массив:" << endl;       
    for (int i = 0; i < n; ++i) {
        for(int j = 0; j < m; ++j) {
            cout << A[i][j] << " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}
int A[n][m];
int P[m];
Такое объявление массивов надежнее, чем Ваше
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти ошибку vusj HTML и CSS 1 11.04.2012 01:57
не могу найти ошибку *mk* Общие вопросы C/C++ 1 02.12.2011 13:40
Не могу найти ошибку... pufystyj PHP 7 03.03.2011 08:36
Не могу найти ошибку в БД Bilargo Помощь студентам 0 26.11.2009 14:00