Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите, пожалуйста, найти ошибку

17K
21 апреля 2006 года
Balashka
6 / / 21.04.2006
Пишу (а точней пытаюсь написать)программу в Microsoft Visual C++ 6.0
По условию, требуется ввести целочисленную матрицу N*M. вот я попыталась... вроде работает, но матрицу не выводит, не могу найти ошибку, помогите, пожалуйста. А еще подскажите, как найти минимальное двухзначное число этой матрицы и вывести сумму элементов К-ого столбца (если К задается с экрана). Уже неделю мучаюсь и не могу сообразить. А нам всего пару недель дали на изучение С++ с нуля и написание программы.




#include "stdafx.h"
#include <iostream.h>

int main(int argc, char* argv[])
{
int a[20][20],n,m,i,j;
cout<<"N=";cin>>n;
cout<<"M=";cin>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{ cout<<"Element"<<i+1<<','<<j+1<<" : ";
cin>>a[j];}
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<'\t'<<a[j];
cout<<endl;}
return 0;}
242
21 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Balashka
По условию, требуется ввести целочисленную матрицу N*M. вот я попыталась... вроде работает, но матрицу не выводит, не могу найти ошибку, помогите, пожалуйста.



У меня выводит:

242
21 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Balashka
Пишу (а точней пытаюсь написать)программу в Microsoft Visual C++ 6.0
вывести сумму элементов К-ого столбца (если К задается с экрана).


Делаешь один фор, в нем пробегаешь по строкам, а столбец равен k.

 
Код:
int sum = 0;
for(int i = 0; i < N; i++)
   sum += a[k];
242
21 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Balashka
А еще подскажите, как найти минимальное двухзначное число



 
Код:
int min = 100;
for(int i = 0; i < N; i++)
  for(int j = 0; j < M; j++)
    if(a[j] > 9 && min > a[j])
        min = a[j];


посмотри на lib.ru учебник по С++
17K
21 апреля 2006 года
Balashka
6 / / 21.04.2006
Цитата:
Originally posted by OlgaKr
 
Код:
int min = 100;
for(int i = 0; i < N; i++)
  for(int j = 0; j < M; j++)
    if(a[j] > 9 && a[j] < 100 && min > a[j])
        min = a[j];


посмотри на lib.ru учебник по С++



Спасибо большое! сейчас попробую...

9.5K
24 апреля 2006 года
Damarus
101 / / 08.04.2006
Цитата:
Originally posted by Balashka
Пишу (а точней пытаюсь написать)программу в Microsoft Visual C++ 6.0
По условию, требуется ввести целочисленную матрицу N*M. вот я попыталась... вроде работает, но матрицу не выводит, не могу найти ошибку, помогите, пожалуйста. А еще подскажите, как найти минимальное двухзначное число этой матрицы и вывести сумму элементов К-ого столбца (если К задается с экрана). Уже неделю мучаюсь и не могу сообразить. А нам всего пару недель дали на изучение С++ с нуля и написание программы.

#include "stdafx.h"
#include <iostream.h>

int main(int argc, char* argv[])
{
int a[20][20],n,m,i,j;
cout<<"N=";cin>>n;
cout<<"M=";cin>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{ cout<<"Element"<<i+1<<','<<j+1<<" : ";
cin>>a[j];}
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<'\t'<<a[j];
cout<<endl;}
return 0;}



Почему размер массива определён? В условии сказано: матрица N*M. Если ввесит N > 20 и M > 20 результат - срыв стека.

17K
29 апреля 2006 года
Balashka
6 / / 21.04.2006
Спасибо вам:) Вроде у меня получилось)
Только вот там где... вывести сумму элементов К-ого столбца... у меня складывает неправильно, не пойму почему...
Проверьте, пожалуйста) может у меня с программой что-то не то(

#include "stdafx.h"
#include <iostream.h>
#include <math.h>

int main(int argc, char* argv[])
{
int a[20][20],n,m,k,i,j;
cout<<"N=";cin>>n;
cout<<"M=";cin>>m;
cout<<"Enter k:";
cin>>k;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{ cout<<"Element"<<i+1<<','<<j+1<<" : ";
cin>>a[j];}
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<'\t'<<a[j];
cout<<endl;}

{
int sum = 0;
for (int i = 0; i < n; i++)
sum+=a[k];
cout<<sum<<endl;
}
return 0;
}


вроде все похоже на истину :(

А еще подскажите, пожалуйста, как получить из исходной матрицы новую матрицу путём отбрасывания всех элементов по периметру...не в одном учебнике не нашла...
17K
29 апреля 2006 года
Balashka
6 / / 21.04.2006
Цитата:
Originally posted by Damarus
Почему размер массива определён? В условии сказано: матрица N*M.


Вот этого я тоже не очень понимаю, но преподаватель сказал нам ввести размер массива на наш выбор :)

242
29 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Balashka
int sum = 0;
for (int i = 0; i < n; i++)
sum+=a[k];
cout<<sum<<endl;
}
return 0;
}



честно говоря на первый взгляд не вижу? Ты проверила что к:

 
Код:
k >= 0 && k < m
2
29 апреля 2006 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Damarus
Почему размер массива определён? В условии сказано: матрица N*M. Если ввесит N > 20 и M > 20 результат - срыв стека.


лишнее замечание. на второй неделе изучения С++ достаточно такого решения.
конечно лучше было бы использовать STL контейнеры :) например vector < vector <int> >
но пока - нашу студентку и за то что есть похвалят. конечно, лучше если она сможет ответить на вопрос "а что будет если ввести N или M больше 20?"

17K
01 мая 2006 года
Balashka
6 / / 21.04.2006
Цитата:
Originally posted by OlgaKr
честно говоря на первый взгляд не вижу? Ты проверила что к:
 
Код:
k >= 0 && k < m


нет, не проверила, а это надо в тело программы вставить?

242
01 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Balashka
нет, не проверила, а это надо в тело программы вставить?



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

Цитата:

k < 0 or k >= M

17K
07 мая 2006 года
Balashka
6 / / 21.04.2006
У меня вопрос...
вот программа на нахождение наименьшего двухзначного числа матрицы


int main(int argc, char* argv[])
{
int a[20][20],n,m,i,j;
cout<<"N=";cin>>n;
cout<<"M=";cin>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{ cout<<"Element"<<i+1<<','<<j+1<<" : ";
cin>>a[j];}
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<'\t'<<a[j];
cout<<endl;}

{
int min = 100;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
if(a[j] > 9 && min > a[j])
min = a[j];
cout<<min<<endl;
}
return 0;}


Если в матрице нет двухзначных чисел, то минимальным программа выдаёт число 100, а как сделать чтоб писалось... "двухзначных чисел нет" ?
242
07 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by Balashka
Если в матрице нет двухзначных чисел, то минимальным программа выдаёт число 100, а как сделать чтоб писалось... "двухзначных чисел нет" ?


Проверку надо сделать;
if(min == 100) значит рпасспечатываешь "двухзначных чисел нет",
else рпасспечатываешь min

 
Код:
if(min == 100)
  std::cout << "двухзначных чисел нет\n";
else
  std::cout << min << std::endl;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог