Войти

Показать полную графическую версию : [решено] Помогите решить задачу по С++


Страниц : 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16

Durson
06-10-2008, 21:08
Логично, а как быть тогда с <iostream> или <iostream.h>, Что правильнее? »
Кулак ему в морду этому умнику, правельно будет #include <iostream.h> потому что .h говорит о разрешении и типе этого файла, потому что официально в языке С++ .h говорит о том что это заголовочный файл, а вы представьте что если у вас в папке include будет самодельный файл iostream.cpp или iostream.txt с каким нибудь нелепыми функциями. И вылезит у вас ошибка.

И вообще традиции чтить надо батенька. :biggrin:

Admiral
06-10-2008, 21:20
Durson, в MSVS6 в файле iostream (см. папку Microsoft Visual Studio\VC98\CRT\SRC) указанно // iostream standard header в iostream.h - *iostream.h - definitions/declarations for iostream classes, а в Visual C++ 2008 уже // iostream standard header for Microsoft, а iostream.h отсутствует вовсе, что указывает на то что Микрософт в этой версии своего компилятора решила поддержать стандарт по данному вопросу.
На крайний случай можно глянуть в драфт стандарта ... Никакого iosteam.h там не упоминается, в отличие от iostream (701 страница). »
Drongo, что говорится в Борланде в файлах iosteam.h и iostream?

Drongo
06-10-2008, 21:26
Здесь (http://www.forum.oszone.net/post-826676-2.html) Admiral говорит об обсуждении, но я не помню ни темы, ни ключевого слова, хотя недавно видел эту тему
[решено] C++ | Проблема с iostream.h (http://forum.oszone.net/thread-71845.html)
iostream (http://ru.wikipedia.org/wiki/Iostream.h) в википедии.

Durson
06-10-2008, 21:34
в файле iostream (см папку Microsoft Visual Studio\VC98\CRT\SRC »
Ага у меня почему то отсутствует папка CRT а вместо неё есть папка MFC и там лежит папка SRC в которой у меня нету файла iostream. :happy:

Admiral
06-10-2008, 21:41
Durson, тогда можно посмотреть папку Microsoft Visual Studio\VC98\Include, в Visual C++ 2008 аналогичная папка и iosteam.h все равно нету.

Drongo
06-10-2008, 21:42
что говорится в Борланде в файлах iosteam.h и iostream? »А где именно смотреть? :dont-know У меня оба есть.

Admiral
06-10-2008, 21:45
Drongo, в обоих, первую закомментированную строчку, если такая имеется, аналогично как в я 44 посте (http://forum.oszone.net/post-917386.html#post917386). А какого года компиллер?

Drongo
06-10-2008, 22:03
C:\Program Files\Borland\CBuilder6\Include\oldstl\iostream.h
// -*- C++ -*-
C:\Program Files\Borland\CBuilder6\Include\iostream.h
// Wrapper header file used to select STL via defines.
// Default is STLport.
C:\Program Files\Borland\CBuilder6\Include\Using\iostream
ничего, кроме кода using std::cout; cin; endl; и т.п
C:\Program Files\Borland\CBuilder6\Include\Stlport\iostream
Только предупреждение что использование на свой страх и риск и права автораА какого года компиллер? »1999 года. Вру! 2002 :) Посмотрел в справка -> о программе.

Admiral
07-10-2008, 01:57
Drongo, что-то ничего определённого, касательно стандарта Borland не указал, возможно в новых версиях внесли ясность, по аналогии как MS.
Durson, что б код работал и в Visual C++ 2008 нужно вместо CharToOem писать CharToOemA, а что б завёлся и конкретный пример нужно после всех include написать using namespace std; для обеспечения работоспособности cout.
Всё дело в том, что MSVS6 по умолчанию работает с ANSI версией функций и данных, а последующие версии уже с Unicode. CharToOemW что подразумевает использования Unicode, для использования старинки ANSI явно указываем CharToOemA.
Такая программа будет иметь обратную совместимость с Win9x/ME, но на 2000м и выше будет выполнятся несколько медленнее чем её Unicode аналоги.

fly85
18-01-2010, 20:28
Ребята! Помогите решить задачу по С++
Условие:
Для одномерного массива N, состоящего из 20 элементов действительного типа найти среднее арифметическое значение.

Заранее спасибо!

Для вас она может показаться совсем простой, но я в языках программирования не очень!!!

Drongo
18-01-2010, 21:38
fly85, Вот так, писалось под Borland C++ Builder 6.0. В строках cout<<"..."; русский текст, это для понимания, при компиляции будут крякозяблики, просто заменить нужно будет текстовку на соответствующую английскую, или сделать чтобы консоль понимала кирилицу.
// Для одномерного массива N, состоящего из 20 элементов действительного типа
// найти среднее арифметическое значение.
#include <iostream>
using namespace std;

int main()
{
const int size = 20; // Размер массива
int array[size] = {0}; // Сам массив
int total = 0; // Результат суммирования всех значений
int result; // Храним результат среднеарифметического
int z; // Просто чтобы окошко не закрывалось

// Считываем 20 значений с клавиатуры и сохраняем в массив
for(int i = 0; i < size; i++){
cout<<"Введите значение в элемент массива [ "<<i<<" ] = ";
cin>>array[i];
}

cout<<"Подсчёт среднего значения"<<endl;

// Подсчёт общей суммы значений
for(int i = 0; i < size; i++)
total += array[i];

result = total / size; // Находим среднее арифметическое

cout<<"Среднеарифметическое значение равно = "<<result<<endl; // Выводим результат

cin>>z;
return 0;
}
//---------------------------------------------------------------------------

fly85
18-01-2010, 22:04
Спасибо! Объяснение как раз кстати!!!!

goor88
19-01-2010, 17:09
Помогите по С++ решить задачу:
Для одномерного массива х состоящий из 12 элементов действительного типа подсчитать количество элементов из интервала | a, b | (a, b любые целые числа а <b)

Спасибо!

Drongo
19-01-2010, 19:14
goor88, Если правильно понял задачу, (просуммировать значения содержащиеся в элементах массива от a до b), если так, то вот. Хотя сомневаюсь что правильно понял постановку задачи.

// Для одномерного массива х состоящий из 12 элементов действительного типа
// подсчитать количество элементов из интервала | a, b | (a, b любые целые числа а <b).
#include <iostream>
using namespace std;

int main()
{
const int size = 12; // Размер массива
int array[size] = {0}; // Сам массив
int total = 0; // Результат суммирования всех значений
int a, b; // Начало и конец интервала.
int z; // Просто чтобы окошко не закрывалось

// Считываем 12 значений с клавиатуры и сохраняем в массив
for(int i = 0; i < size; i++){
cout<<"Введите значение в элемент массива [ "<<i<<" ] = ";
cin>>array[i];
}

// Вводим значения интервала, без проверки выхода за диапазон массива
cout<<"Введите начало интервала = "<<endl;
cin>>a;
cout<<"Введите конец интервала = "<<endl;
cin>>b;

cout<<"Подсчёт среднего значения"<<endl;

// Подсчёт общей суммы значений
for(int i = a; i < b; i++)
total += array[i];

cout<<"Общая сумма значений элементов массива от "A" до "B" = "<<total<<endl; // Выводим результат

cin>>z;
return 0;
}
//---------------------------------------------------------------------------

goor88
19-01-2010, 21:38
Спасибо огромное!!! Вы настоящий профессионал!!!

Если вам не трудно и эту сможете решить?
Для одномерного массива V, состоящий из 15 действительных чисел, найти сумму элементов.
Большое спасибо!!!
PS: Это последняя.

Lisiy_egik
20-01-2010, 02:14
goor88, Если задание формулировалось именно так. как вы тут сказали( в смысле нет никаких требований к реализации), то вот решение:

//Для одномерного массива V, состоящий из 15 действительных чисел, найти сумму элементов.

#include <iostream> // включение стандартной библиотеки ввода - вывода
using namespace std; // использование пространства имен std

const int size = 15; //задается переменная. используемая для определения размерности массива

int main()
{
int v[size]; // объявление самого массива

cout << "Введите " << size << " цифр, которые будут содержаться в массиве" << endl;
for(int i = 0; i<size; i++)
cin >> v[i]; // цикл заполнения массива с консоли

int summ = 0; // объявление и инициализация переменной для хранения суммы

for(int q = 0; q<size; q++)
summ += v[q]; // суммирование всех элементов массива

cout << "Summ = " << summ << endl; // вывод результата на экран

return 0;
}

Lisiy_egik
20-01-2010, 05:23
Cutegirl1645, ну не знаю какие были требования к выполнению задания, но вот я так сделал, компилится без ошибок, все работает, проверку на ошибки сама доделаешь, а то я и так полтора часа назад курить собирался, да на твой пост наткнулся.

в общем:

main.cpp:
//Написать программу, которая подводит итоги конкурса "5 лучших товаров года". Оценка товара производится
//по пятибалльной системе. Программа должна получать от пользователя число людей, давших товару определенный
//бал, вычислить общее количество проголосовавших за данный товар людей и число набранных баллов, и после этого
//упорядочить список (методом пузырька с простым алгоритмом) в соответствии с набранным количеством баллов.
//Сортировку оформить в виде функции.

#include <iostream>
#include "rus8.h"
#include "goods.h"
using namespace std;

int main()
{
rus();

goods *arr = new goods[g];

get_point(arr);
set_people(arr);
set_spoint(arr);
get_result(arr);
print_result(arr);

delete [] arr;

return 0;

}

goods.h
#pragma once
#include <iostream>
using namespace std;

const int sp = 5; // size point кол-во баллов в системе оценивания
const int sn = 30; // size name макс кол-во символов в названии товара
const int g = 5; // кол-во товаров

struct goods
{
int poin[sp];
char name[sn];
int spoint;
int people;
};

void get_point(goods *);
void set_people(goods *);
void set_spoint(goods *);
void get_result(goods *);
void print_result(goods *);


goods.cpp
#include "goods.h"

void get_point(goods *arr)
{
for(int i = 0; i < g ; i++)
{
cout << "Введите наименование (макс длинна 30 символов) : ";
cin >> arr[i].name;
for (int q = 0; q < sp; q++)
{
cout << endl << "Введите кол-во людей оценивших этот товар в " << (q+1) << " балл(а)";
cin >> arr[i].poin[q];
}
}
cout << endl;
}

void set_people(goods *arr)
{
for(int i = 0; i < g; i++)
{
arr[i].people = 0;
for(int q = 0; q < sp; q++)
arr[i].people = (arr[i].people + arr[i].poin[q]);
}
}

void set_spoint(goods *arr)
{
for(int i = 0; i < g; i++)
{
arr[i].spoint = 0;
for(int q = 0; q < sp; q++)
arr[i].spoint += (arr[i].poin[q]*(q+1));
}
}
void get_result(goods *arr)
{
goods temp;

for(int i = 0; i < g; i++)
{
for(int q = (g-1); q > i; q--)
{
if(arr[q-1].spoint < arr[q].spoint)
{
temp = arr[q-1];
arr[q-1] = arr[q];
arr[q] = temp;
}
}
}
}


void print_result(goods *arr)
{
for(int i = 0; i < g; i++)
{
cout << (i+1) << "-е место занял товар : " << arr[i].name << endl;
cout << "Набравший : " << arr[i].spoint << " баллов" << endl;
cout << "Всего проголосовавших за этот товар : " << arr[i].people << endl << endl;
}
}


rus8.h
#ifndef _RUS_H
#define _RUS_H

#include <locale.h>

inline void rus( void )
{
setlocale( LC_CTYPE, ".1251" );
setlocale( LC_MONETARY, ".1251" );

return;
}

#endif

с тебя пиво, я думаю оно того стоит) :coffee: даже если не за прогу, то в утеху мне, за то. что я сегодня экзамен по программированию провалил...

goor88
20-01-2010, 07:15
Большое человеческое СПАСИБО !!! :ok:

Champ10n
26-01-2010, 07:05
Сделайте, пожалуйста, кому не сложно, три задачки по C++

1.Структуры(записи) и программирование информационных задач
Разработать программу регистрации кандидатов в депутаты. Для каждого из кандидатов хранятся:
* Фамилия, имя и отчество.
* Возраст.
* Профессия.
* Наименование партии.
* Номер избирательного округа.
* Судимость.

2. Работа с файлами
Обеспечить хранение данных в файлах для программы, разработанной в рамках задания 1.

3. Динамические структуры данных
Переделать задание 1, используя динамическую структуру данных для хранения данных.

Lisiy_egik
27-01-2010, 12:16
Сделайте, пожалуйста, кому не сложно, три задачки по C++ »

это уже перебор. как бы тут можно подсказать в случае. если что-нибудь не получается, а вот если просто "лень" делать и свалить это на другого - это уже наглость.

в принципе тут 3 задачи. которые я бы реализовал в 1й, ибо не вижу смысла размещать не в динамической памяти массив структур. да и ввод для теста будет долгим, если это делать с консоли.

мб сегодня выложу тебе решение




© OSzone.net 2001-2012