Помогите, пожалуйста, найти ошибку
По условию, требуется ввести целочисленную матрицу 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. вот я попыталась... вроде работает, но матрицу не выводит, не могу найти ошибку, помогите, пожалуйста.
У меня выводит:
Пишу (а точней пытаюсь написать)программу в Microsoft Visual C++ 6.0
вывести сумму элементов К-ого столбца (если К задается с экрана).
Делаешь один фор, в нем пробегаешь по строкам, а столбец равен k.
for(int i = 0; i < N; i++)
sum += a[k];
А еще подскажите, как найти минимальное двухзначное число
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 учебник по С++
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 учебник по С++
Спасибо большое! сейчас попробую...
Пишу (а точней пытаюсь написать)программу в 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 результат - срыв стека.
Только вот там где... вывести сумму элементов К-ого столбца... у меня складывает неправильно, не пойму почему...
Проверьте, пожалуйста) может у меня с программой что-то не то(
#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;
}
вроде все похоже на истину :(
А еще подскажите, пожалуйста, как получить из исходной матрицы новую матрицу путём отбрасывания всех элементов по периметру...не в одном учебнике не нашла...
Почему размер массива определён? В условии сказано: матрица N*M.
Вот этого я тоже не очень понимаю, но преподаватель сказал нам ввести размер массива на наш выбор :)
int sum = 0;
for (int i = 0; i < n; i++)
sum+=a[k];
cout<<sum<<endl;
}
return 0;
}
честно говоря на первый взгляд не вижу? Ты проверила что к:
Почему размер массива определён? В условии сказано: матрица N*M. Если ввесит N > 20 и M > 20 результат - срыв стека.
лишнее замечание. на второй неделе изучения С++ достаточно такого решения.
конечно лучше было бы использовать STL контейнеры :) например vector < vector <int> >
но пока - нашу студентку и за то что есть похвалят. конечно, лучше если она сможет ответить на вопрос "а что будет если ввести N или M больше 20?"
честно говоря на первый взгляд не вижу? Ты проверила что к:
нет, не проверила, а это надо в тело программы вставить?
нет, не проверила, а это надо в тело программы вставить?
желательно:
или ты как пользователь смотришь за собой что вводишь правильные данные, или это делает программа, иначе будут проблемы при:
k < 0 or k >= M
вот программа на нахождение наименьшего двухзначного числа матрицы
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, а как сделать чтоб писалось... "двухзначных чисел нет" ?
Если в матрице нет двухзначных чисел, то минимальным программа выдаёт число 100, а как сделать чтоб писалось... "двухзначных чисел нет" ?
Проверку надо сделать;
if(min == 100) значит рпасспечатываешь "двухзначных чисел нет",
else рпасспечатываешь min
std::cout << "двухзначных чисел нет\n";
else
std::cout << min << std::endl;