• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Нужна помощь в написании программы C++

SHishkin

Ученик
Регистрация
27 Сен 2011
Сообщения
1
Реакции
0
Баллы
0
Нужна помощь в написании программы C++

Дана матрица (10х15).
Найти среднее значение отрицательных элементов, учитывая
только столбцы, где отрицательных элементов не более 10.
 
Эх это же просто.... только учись.
Код:
#include <iostream>
using namespace std;
int main()
{
int masiv[9][14];
int i,j;
double tmin=0,kmin=0;
char kolvo=0;
for (i=0; i<=9; i++)
{
for (j=0; j<=14; j++)
{
cin>>masiv[i][j];
}
cout<<"\n";
}
for (i=0; i<=9; i++)
{
for (j=0; j<=14; j++)
{
cout<<masiv[i][j]<<" ";
}
cout<<"\n";
}
for (i=0; i<=9; i++)
{
kolvo=0; 
tmin=0;
for (j=0; j<=14; j++)
{
if (masiv[i][j]<0)
{
tmin=tmin+masiv[i][j]; 
kolvo++;
}
}
if ((kolvo<=10) and (kolvo>0))
kmin=kmin+(tmin/10);
}
cout<<"Crednee = "<<kmin<<"\n";
system("pause");
return 0;
}
 
И словит эта программа SEGFAULT при первом же пуске.
 
int massiv[9][14]<=>massiv:array [0..8,0..13] of integer;
 
Вот немного исправленная и подправленная.
Код:
#include <iostream>
using namespace std;
int main()
{
int masiv[9][14];
int i,j;
double tmin=0,kmin=0;
char kolvo=0,KOLVO=0;
for (i=0; i<=9; i++)
{
for (j=0; j<=14; j++)
{
cin>>masiv[i][j];
}
cout<<"\n";
}
system("cls");
for (i=0; i<=9; i++)
{
for (j=0; j<=14; j++)
{
cout<<masiv[i][j]<<" ";
}
cout<<"\n";
}
for (i=0; i<=9; i++)
{
kolvo=0; 
tmin=0;
for (j=0; j<=14; j++)
{
if (masiv[i][j]<0)
{
tmin=tmin+masiv[i][j]; 
kolvo++;
KOLVO++;
}
}
if ((kolvo<=10) and (kolvo>=1))
kmin=kmin+tmin;
else KOLVO-=kolvo;
}
cout<<"Crednee = "<<kmin/KOLVO<<"\n";
system("pause");
return 0;
}
Снизу снимок программы.
 

Вложения

  • Снимок.webp
    Снимок.webp
    20.2 KB · Просмотры: 150
Ошибка осталась на месте. Ну нету у вас в массиве 9 строки и 14 столба, я специально привел эквивалентную запись массива на паскале.
Это-ужасно.
Это-тоже ужасно. Есть <conio.h> и clrscr для этой цели.
а для этой-getch();
 
Long Cat, напишите свою программу если моя вам кажется ужасной.
 
Я ни в коем случае не хочу вас обидеть. Из вашей программы получится верная, при условии исправления границ работы циклов, чтобы они не убегали за массив, и устранения совершенно неуместных вызовов system().
 
clrscr мой компилятор отказался компилять (не знаю почему, <conio.h> я подключил), границы кажись подправил (хотя если следовать моей книге то int massiv[9][14] имеет диапазоны 0..9 и 0..14 => 10 и 15 элементов соответственно), getch() вместо system("pause"); вставил.
Код:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int masiv[11][16];
int i,j;
double tmin=0,kmin=0;
char kolvo=0,KOLVO=0;
for (i=0; i<=9; i++)
{
for (j=0; j<=14; j++)
{
cin>>masiv[i][j];
}
cout<<"\n";
}
system("cls");
for (i=0; i<=9; i++)
{
for (j=0; j<=14; j++)
{
cout<<masiv[i][j]<<" ";
}
cout<<"\n";
}
for (i=0; i<=9; i++)
{
kolvo=0; 
tmin=0;
for (j=0; j<=14; j++)
{
if (masiv[i][j]<0)
{
tmin=tmin+masiv[i][j]; 
kolvo++;
KOLVO++;
}
}
if ((kolvo<=10) and (kolvo>=1))
kmin=kmin+tmin;
else KOLVO-=kolvo;
}
cout<<"Crednee = "<<kmin/KOLVO<<"\n";
getch();
return 0;
}
 
clrscr мой компилятор отказался компилять
Что за компилятор, версия?
если следовать моей книге то int massiv[9][14] имеет диапазоны 0..9 и 0..14
Что за книга? Кто автор? В печку ее! (Булгаков)
не
а
Код:
cout<<endl;
у нес не только UNIX с концом строки \n, у нас еще Windows с концом строки \r\n и MacOS с концом строки \r.
 
Компилятор DevCpp версия 7.3.1.3
Книга "С++ Шаг за шагом" Шилдт
 
Правильная очистка экрана для Mingw:
Код:
#include <windows.h>

void ClearScreen()
  {
  HANDLE                     hStdOut;
  CONSOLE_SCREEN_BUFFER_INFO csbi;
  DWORD                      count;
  DWORD                      cellCount;
  COORD                      homeCoords = { 0, 0 };

  hStdOut = GetStdHandle( STD_OUTPUT_HANDLE );
  if (hStdOut == INVALID_HANDLE_VALUE) return;

  /* Get the number of cells in the current buffer */
  if (!GetConsoleScreenBufferInfo( hStdOut, &csbi )) return;
  cellCount = csbi.dwSize.X *csbi.dwSize.Y;

  /* Fill the entire buffer with spaces */
  if (!FillConsoleOutputCharacter(
    hStdOut,
    (TCHAR) ' ',
    cellCount,
    homeCoords,
    &count
    )) return;

  /* Fill the entire buffer with the current colors and attributes */
  if (!FillConsoleOutputAttribute(
    hStdOut,
    csbi.wAttributes,
    cellCount,
    homeCoords,
    &count
    )) return;

  /* Move the cursor home */
  SetConsoleCursorPosition( hStdOut, homeCoords );
  }
Подробности
 
Назад
Сверху