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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Цифровой корень числа http://www.cyberforum.ru/cpp-beginners/thread1006920.html
Найти цифровой корень натурального числа (складываются все цифры числа, затем все цифры найденной суммы и т.д. до тех пор, пока не будет получено однозначное число). #include <stdio.h> #include <conio.h> void main() { int n,s; clrscr(); printf("Введите натуральное число n: ");
C++ Хочу выучить C++ Мне 15 лет. Немного знаю Pascal ABC.NET, программирую на PHP и JavaScript. Хочу с нуля выучить плюсы. Подскажите пожалуйста литературу по C++. Чтобы подростку было понятно. Мне важно, чтобы были расписаны самые азы и было много примеров. Если к книге будет прилагаться диск с примерами - вообще сказка! И желательно, чтобы конечно бесплатно скачать книгу можно было :) Или онлайн ЗЫ. Ну и среду... http://www.cyberforum.ru/cpp-beginners/thread1006910.html
Написать программу C++
Написать программу, которая упорядочивает вещественный массив методом выбора
while VS for! C++
помогите разобраться! в операторах while и for
C++ Изменить программу http://www.cyberforum.ru/cpp-beginners/thread1006869.html
Найти сумму и произведение первых n натуральных чисел. #include <stdio.h> #include <conio.h> void main() { int n,i; clrscr(); printf("Введите натуральное число n: "); scanf("%d", &n);
C++ Как создать объект класса? ПРоблемма из-за раздельной компиляции Есть 4 файла engine.h - базовый класс engine.cpp - реализация методов базового класса car.h - класс поизводный от engine car.cpp - реализация класа car main.cpp - функция main в main создаётся объект класса car car a; так не компилируется g++; если всё в одном файле, то всё проходит. подробнее

Показать сообщение отдельно
АнастасияПять
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 12

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

13.11.2013, 20:16. Просмотров 190. Ответов 0
Метки (Все метки)

#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); // Вызывает подпрограмму вывода результата
}
Миниатюры
Почему значения таблицы которые не подходят под условия, выдают какие то символы, вместо того чтобы не появляться вообще  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru