Форум программистов, компьютерный форум CyberForum.ru

Почему значения таблицы которые не подходят под условия, выдают какие то символы, вместо того чтобы не появляться вообще - C++

Восстановить пароль Регистрация
 
АнастасияПять
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 12
13.11.2013, 20:16     Почему значения таблицы которые не подходят под условия, выдают какие то символы, вместо того чтобы не появляться вообще #1
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <cstring>
#include <conio.h>


using namespace std;

struct knigizd //ОПИСЫВАЕМАЯ СТРУКТУРА
{
char AK[30]; // переменная "автор книги"
char NK[30]; // переменная "название книги"
double tir; // переменная "тираж"
double cena; // переменная "цена"
double DD; // переменная "день сдачи издательства в печать"
double DM; // переменная "месяц сдачи издательства в печать"
double DG; // переменная "год сдачи издательства в печать"
};
void input(int n,knigizd* str) // Подпрограмма ввода
{
setlocale (LC_ALL, "Russian");
cout<<"Здравствуйте!Имеется информация о книжном издательстве, "<<
"где осуществляется поиск по условия"<<endl;
for(int i=0;i<n;i++)
{
cout<<"Введите исходные данные через пробел, автора книги,"<<
"название книги,тираж,цену книги за 1 экземпляр, "<<
"день сдачи издания в печать, "<<
"месяц сдачи издания в печать,год сдачи издания в печать"<<endl;

cin>>str[i].AK>>str[i].NK>>str[i].tir>>str[i].cena>>str[i].DD>>str[i].DM>>str[i].DG; // Ввод массива структур
}
}
void output(int n,knigizd* str, int m,knigizd* str1,int k,knigizd* str2) // Подпрограмма вывода результатов
{
setlocale (LC_ALL, "Russian");
// Вывод исходного массива структур:
cout<<"Автор книги Название книги Тираж Цена День сдачи Месяц сдачи Год сдачи "<<endl;
for (int i=0;i<n;i++)
{
cout<<str[i].AK<<" "<<str[i].NK<<" "<<str[i].tir<<" "<<str[i].cena<<" "<<str[i].DD<<" "<<str[i].DM<<" "<<str[i].DG<<endl;
}

cout<<"Автор книги Название книги Тираж Цена День сдачи Месяц сдачи Год сдачи "<<endl; // Вывод массива структур, издания которые сданны в печать зимой:
for (int j=0;j<m;j++)
{
cout<<str1[j].AK<<" "<<str1[j].NK<<" "<<str1[j].tir<<" "<<str1[j].cena<<" "<<str1[j].DD<<" "<<str1[j].DM<<" "<<str1[j].DG<<endl;
}
cout<<"Автор книги Название книги Тираж Цена День сдачи Месяц сдачи Год сдачи "<<endl; // Вывод массива структур, издания тираж которых больше среднего:
for (int s=0;s<k;s++)
{
cout<<str2[s].AK<<" "<<str2[s].NK<<" "<<str2[s].tir<<" "<<str2[s].cena<<" "<<str2[s].DD<<" "<<str2[s].DM<<" "<<str2[s].DG<<endl;
}
}

void Search_W(int n,knigizd* str, int m,knigizd* str1) // Попрограмма поиска изданиц, сданных в печать зимой
{ int j=0;
for(int i=0;i<n;i++)
{ //cout<<"str="<<str[i].DM<<endl;
if ((str[i].DM == 12) || (str[i].DM == 1) || (str[i].DM == 2) ) // Если хоть одно значение переменной "месяц сдачи", попадает под условие
{
str1[j]=str[i]; // то в значения массива str1 попадает значения исходного массива, которые удовлетворяют условию
j++; // счетчик увеличивается на 1
//cout<<"j="<<j<<endl;
}
}
m=j-1; // длинна массива уменьшается
// cout<<"m="<<m<<endl;
// cout<<"str1="<<str1<<endl;
}
// Подпрограмма вычисления среднего значения:
void Count_avg(int n,knigizd* str, double &Avg_all )
{
Avg_all = 0; // Переменная среднего значения обнуляется
for(int i=0;i<n;i++) // Цикл по исходному массиву
{
Avg_all=Avg_all+str[i].tir; // Значения переменной "тираж" суммируются и записываются в переменную среднего знач.
}
Avg_all = Avg_all/n; // Переменная среднего знач. делится на длинну массива и получается итоговый ответ
// cout<<"Avg_all="<<Avg_all<<endl;
}
// Попрограмма поиска изданий, тираж которых больше среднего значения:
void Search_avg (int n,knigizd* str,int k,knigizd* str2,double Avg_all)
{
int s=0;
for(int i=0;i<n;i++)
{
if (str[i].tir > Avg_all) // Если значение переменной "тираж" больше выше вычисленного среднего значения
{
str2[s]=str[i]; // то в массив str2 записываются те значения которые удовлетворяют условию
s++; // счетчик увеличивается
}
}
k = s - 1; // длинна массива уменьшается
}
// Подпрограмма решения задачи, вызывающая модули нижнего уровня:
void solution(int n,knigizd* str, int m,knigizd* str1,int k,knigizd* str2, double Avg_all)
{ Search_W(n,str,m,str1);
Count_avg(n,str,Avg_all);
Search_avg(n,str,k, str2, Avg_all);
}
int main() // Головная программа
{ setlocale (LC_ALL, "Russian");
int n;
cout<<"Введите размер таблицы:"<<endl;
cin>>n;
knigizd* str=new knigizd[n]; // Создание динамического исходного массива
int m;
m=n; // Длинна массива str1 принимает значение длинны исходного массива
knigizd* str1=new knigizd[m]; // Создание динамического массива str1
int k;
k=n;
knigizd* str2=new knigizd[k]; // Создание динамического массива str2
double Avg_all=0; // Объявление переменной среднего значения
input(n,str); // Вызывает подпрограмму ввода данных
solution(n,str,m,str1, k,str2,Avg_all); // Вызывает подпрограмму решение задачи
output(n,str,m,str1,k,str2); // Вызывает подпрограмму вывода результата
}
Миниатюры
Почему значения таблицы которые не подходят под условия, выдают какие то символы, вместо того чтобы не появляться вообще  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 20:16     Почему значения таблицы которые не подходят под условия, выдают какие то символы, вместо того чтобы не появляться вообще
Посмотрите здесь:

в цикле где выводится матрица j принимает какие-то странные значения. Почему? C++
C++ По системе двусторонних дорог определить, можно ли, закрыв какие-нибудь три дороги, добиться того, чтобы из города A нельзя было попасть в город B
Нужно выяснить, какие символы встречаются в обеих строках, так же и те, которые встречаются только в одной C++
C++ Какие значения можно присвоить целочисленной перемен- ной x, чтобы результатом выражения x/5 стало число 2014
Какие SQL запросы нужны для того, чтобы можно было отображать материал базы данных в комбоксе. C++
C++ Найти названия игрушек, которые не превышают заданной стоимости и подходят для детей данного возраста
C++ На доске стоят два ферзя. Указать поля, на которые может пойти белый ферзь, чтобы не попасть под удар черного
Почему не выдает значения char с таблицы? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru