Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 16

Массивы,struct и всякое такое

30.04.2011, 13:19. Показов 2093. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ спасайте задали 11 задач по С++, 8 сделал а остальные 3 не получаются....помогите пожалуйста.
1.Вычислить длины окружностей, площади кругов и объемы шаров для ряда заданных радиусов. Признаком окончания счета является нулевое значение радиуса.(принцип понял,реализовать не получилось)
2.Дана матрица A:array[1..6,1..2] вещественных чисел. Рассматривая A[I,1] и A[I,2] как координаты точек на плоскости, определить радиус наименьшего круга (с центром в начале координат), внутрь которого попадают все эти точки.
3.Вывести список сотрудников, имеющих высшее образование и 2 и более ребенка.( это ваще хз как сделать... вроде просили struct использовать)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2011, 13:19
Ответы с готовыми решениями:

объясните пожалуйста. что такое struct STUDENT?
include <conio.h> #include <iostream> struct STUDENT { char fio; /* фамилия и.о. */ char oc; /* 5 оценок + '\n' + '\0' */ }; ...

чё это за переопределение такое структуры ? template <> struct Factorial<0>
Template &lt;int N&gt; struct Factorial { enum { value = N * Factorial&lt;N - 1&gt;::value }; }; template &lt;&gt; struct Factorial&lt;0&gt; ...

Покраска и всякое такое
Первый вопрос: Как покрасить php страницу?

19
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
30.04.2011, 14:22
№2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cmath>
 
float Distance(float x1, float y1, float x2, float y2) {
  return pow(pow(x1 + x2, 2.) + pow(y1 + y2, 2.), .5);
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  float Points[6][2];
 
  for (int i = 0; i < 6; ++i)
    printf("(%.1f, %.1f) ", Points[i][0] = (rand() % 1001 - 500) / 10.,
                        Points[i][1] = (rand() % 1001 - 500) / 10.);
  printf("\n");
 
  float max_radius = 0;
  for (int i = 0; i < 6; ++i) {
    float this_distance = Distance(0, 0, Points[i][0], Points[i][1]);
    if (max_radius < this_distance)
      max_radius = this_distance;
  }
 
  printf("Radius = %f\n", max_radius);
  return 0;
}
1
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
30.04.2011, 14:39
№1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
#include <cmath>
 
#define PI 3.1415926535
 
int main()
    {
    setlocale(LC_ALL,"rus");
 
    std::vector<double> lengths, areas, volumes;
 
    double radius;
 
    while(std::cin >> radius && radius != 0)
        {
        lengths.push_back(2.0 * PI * radius);
        areas.push_back(PI * pow(radius,2));
        volumes.push_back(4.0 / 3.0 * PI * pow(radius,3));
        }
 
    for(size_t i = 0, len = lengths.size(); i < len; ++i)
        {
        std::cout << "Радиус №" << i + 1 << ".\nДлина окружности = " << lengths[i]
            << "\nПлощадь круга = " << areas[i]
            << "\nОбъем шара = " << volumes[i] << std::endl;
        }
 
    return 0;
    }
1
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 16
30.04.2011, 16:13  [ТС]
вау....супер код....а он на "C for DOS" пойдёт?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.04.2011, 16:52
Getron, нет. Вам ничего не намекает, что сейчас уже Windows 7 и времена ДОС-а прошли очень давно?
0
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 16
30.04.2011, 17:41  [ТС]
я понимаю,но у нас колледж походу ещё в прошлом веке живёт....у нас на втором курсе был Free Pascal и Lazarus(Delphi), а на третьем уже (C for DOS), тут уж ничего неподелаешь....мы все недовольны этой шнягой
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
30.04.2011, 19:35
№2 for ansi C
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  size_t i;
  float points[6][2];
  float radius, distance;
 
  for (i = 0; i < 6; ++i)
    printf("(%.2f, %.2f) ", points[i][0] = (rand() % 1001 - 500) / 100.,
                            points[i][0] = (rand() % 1001 - 500) / 100.);
  printf("\n");
 
  for (i = 0; i < 6; ++i)
    if (radius < (distance = pow(pow(points[i][0], 2.) +
                                 pow(points[i][1], 2.), 0.5)))
      radius = distance;
 
  printf("Radius = %f\n", radius);
 
  return 0;
}
Добавлено через 1 час 22 минуты
№3 for C
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
enum Education { base, high, higher };
 
struct Stuff {
  size_t id;
  enum Education education;
  size_t children;
};
 
void PrintStuff(struct Stuff *stuff) {
  printf("Id: %d, education: ", stuff->id);
  switch (stuff->education) {
    case 0: printf("base, "); break;
    case 1: printf("high, "); break;
    case 2: printf("higher, "); break;
  }
  printf("children: %d.\n", stuff->children);
}
 
struct Stuff *RandomStuff(size_t id, struct Stuff *stuff) {
  stuff->id = id;
  stuff->education = rand() % 3;
  stuff->children = rand() % 3;
  return stuff;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  size_t i;
 
  struct Stuff stuff[20];
  for (i = 0; i < 20; ++i)
    PrintStuff(RandomStuff(i, &stuff[i]));
 
  printf("Higher education with two children:\n");
 
  for (i = 0; i < 20; ++i)
    if (stuff[i].education == higher && stuff[i].children == 2)
      PrintStuff(&stuff[i]);
 
  return 0;
}
1
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 16
30.04.2011, 19:52  [ТС]
Ну ребята, если эти коды попрут на C for DOS, то для меня это будет большая удача))) кстати задача #3 тоже не можете понять? я и препода спрашивал и толку ноль...хз как её сделать

Добавлено через 1 минуту
последний код конечно вызывает доверие,но как это приподнести....я даже незнаю что stuff вполняет

Добавлено через 26 секунд
грузанёт вопросами

Добавлено через 14 минут
Протестил все коды, все идут, но С for DOS, настаивает на том что "Этого просто не может быть!!"
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
30.04.2011, 20:04
№1
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
 
  const float k_PI = 3.1415926535;
  int radius;
 
  do {
    printf("Enter radius, 0 for last: ");
    scanf("%d", &radius);
    printf("Circle curve length: %f.\n", 2.0 * k_PI * radius);
    printf("Circle area: %f.\n", k_PI * radius * radius);
    printf("Sphere volume: %f.\n", 4.0 / 3.0 * k_PI * radius * radius * radius);
  } while (radius != 0);
 
  return 0;
}
Добавлено через 9 минут
Цитата Сообщение от Getron Посмотреть сообщение
Протестил все коды, все идут, но С for DOS, настаивает на том что "Этого просто не может быть!!"
Ну и в чем заключается смысл этого предложения!?

Цитата Сообщение от Getron Посмотреть сообщение
последний код конечно вызывает доверие,но как это приподнести....я даже незнаю что stuff вполняет
Цитата Сообщение от Getron Посмотреть сообщение
грузанёт вопросами
Читайте книги, конспекты лекций, википедию, в конце-концов.
1
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 16
01.05.2011, 05:29  [ТС]
Прочитать не проблема, у нас в колледже ПС старое...а то что вы пишете это на "С" и на "С++"...
Но всё равно спасибо.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
01.05.2011, 10:05
Вот за такой ужас:
Code
1
2
3
float Distance(float x1, float y1, float x2, float y2) {
  return pow(pow(x1 + x2, 2.) + pow(y1 + y2, 2.), .5);
}
Я сразу пару ставлю...
Вот так надо:
Code
1
2
3
float Distance(float x1, float y1, float x2, float y2) {
  return sqrt((x1+x2)*(x1+x2) + (y1+y2)*(y1+y2));
}
С for DOS - какая у вас IDE?
Турбо С?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.05.2011, 18:17
ValeryLaptev, Не сказал бы я что это ужас, ага. Плюс
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
return sqrt((x1+x2)*(x1+x2) + (y1+y2)*(y1+y2));
Вот так уж точно не стоит. pow не просто так существует.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
01.05.2011, 23:33
Цитата Сообщение от Getron Посмотреть сообщение
Прочитать не проблема, у нас в колледже ПС старое...
Дык, вперед за книги.

Цитата Сообщение от Getron Посмотреть сообщение
а то что вы пишете это на "С" и на "С++"...
Начать можно с отличий просто "C" от "C для DOS". Узнаете много нового.

Добавлено через 35 минут
Про sqrt согласен. Оно, например, быстрее pow(, .5) и по смыслу подходит лучше. Про умножение не согласен. Оно, например, может быть медленней pow(, 2) и по смыслу подходит меньше.
0
01.05.2011, 23:47

Не по теме:

Цитата Сообщение от lemegeton Посмотреть сообщение
Про умножение не согласен. Оно, например, может быть медленней pow(, 2)
с трудом однако верится

0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
02.05.2011, 00:14
Цитата Сообщение от lemegeton Посмотреть сообщение
Про sqrt согласен. Оно, например, быстрее pow(, .5) и по смыслу подходит лучше. Про умножение не согласен. Оно, например, может быть медленней pow(, 2) и по смыслу подходит меньше.
1. pow(x,2) - это вызов стандартной функции (с передачей параметров в стек, и получением результата, с прологом и эпилогом - пара десятков команд), а умножение - ОДНА команда процессора...
2. Я непосредственно по формуле эвклидова расстояния написал - как в учебнике. Так что яснее - некуда...
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
02.05.2011, 00:21
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
это вызов стандартной функции (с передачей параметров в стек, и получением результата, с прологом и эпилогом - пара десятков команд
не забываем, что компилятор часто прекрасно инлайнит функции стандартной библиотеки
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
02.05.2011, 00:38
Цитата Сообщение от alex_x_x Посмотреть сообщение
не забываем, что компилятор часто прекрасно инлайнит функции стандартной библиотеки
B все равно это длиннее ОДНОЙ команды...

Добавлено через 6 минут
Ассемблерная вставка - вычисление формулы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
asm
{ fld x1
   fsub x2
   fld st(0)
   fmul
   fld y1
   fsub y2
   fld st(0)
   fmul
   fsqrt
   fst res
}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
02.05.2011, 01:25
Цитата Сообщение от alex_x_x Посмотреть сообщение
с трудом однако верится
Code
1
gcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
Code
1
gcc -O0 -Wall -lm temp.c
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
float Distance1(float x1, float y1, float x2, float y2) {
  return sqrt(pow(x1 + x2, 2.) + pow(y1 + y2, 2.));
}
 
float Distance2(float x1, float y1, float x2, float y2) {
  return sqrt((x1 + x2) * (x1 + x2) + (y1 + y2) * (y1 + y2));
}
 
clock_t TestDistanceFunction(float (*function)(float, float, float, float),
                             size_t iterations) {
  size_t i;
  clock_t start_time = clock();
  for (i = 0; i < iterations; ++i) {
    float result = function((rand() % 10000) / 100., (rand() % 10000) / 100.,
                            (rand() % 10000) / 100., (rand() % 10000) / 100.);
    result += 1.;
  }
  return clock() - start_time;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  size_t operation_count = 1500000;
 
  printf("%f\n", TestDistanceFunction(Distance1, operation_count) /
                 (float)CLOCKS_PER_SEC);
  printf("%f\n", TestDistanceFunction(Distance2, operation_count) /
                 (float)CLOCKS_PER_SEC);
 
  return 0;
}
Code
1
2
1.110000
1.180000
То бишь где-то 6% разницы. Разумеется, на моей машине, с моей архитектурой, с глибц, без оптимизаций, и пример притянут за уши.

Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Ассемблерная вставка - вычисление формулы:
Процессоров без FPU, конечно, не существует и архитектур, кроме 8086, конечно же тоже не существует.
Гениальный, кстати, компилятор. GCC генерит гораздо больше команд. Что это? MS? Borland? Intel?
1
114 / 114 / 13
Регистрация: 29.04.2010
Сообщений: 240
02.05.2011, 02:26
lemegeton,
Code
1
2
1.012000 
0.629000
MSVS, без оптимизации.
0
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 16
08.05.2011, 16:29  [ТС]
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Вот за такой ужас:
Code
1
2
3
float Distance(float x1, float y1, float x2, float y2) {
  return pow(pow(x1 + x2, 2.) + pow(y1 + y2, 2.), .5);
}
Я сразу пару ставлю...
Вот так надо:
Code
1
2
3
float Distance(float x1, float y1, float x2, float y2) {
  return sqrt((x1+x2)*(x1+x2) + (y1+y2)*(y1+y2));
}
С for DOS - какая у вас IDE?
Турбо С?
ну насчёт того что, то говно что стоит у нас в шараге...наврятле турбо С, хотя вообще незнаю чё там за древнятина
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2011, 16:29
Помогаю со студенческими работами здесь

про Java, C#, .NET, MS и всякое такое...
Наткнулся тут на старую дискуссию, перешедшую в грязный флейм =) Так что выложу тут свои соображения по этому поводу. Java - это...

как посчитать ток утечки и всякое такое
нашел концы освещения салона в автомобиле. решил приделать по такому случаю реле courtesy light. при открытии двери концевик замыкает...

софтовая обработка кнопки и всякое разное такое
аппаратные методы мне не нравятся. нужно по кратковременному нажатию кнопки (например, до 1с) менять на экране цифры: переменная...

mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /"всякое такое" on line 7
Сегодня эта ошибка мне покоя не даёт просто чего только не исправлял. mysql_fetch_array(): supplied argument is not a valid MySQL result...

Struct sockaddr vs. struct sockaddr_in
Вопрос,связанный с переносимостью кода на другие платформы. Читаю эту книжку http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru