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

Скорость выполнения, а так же работа с дв. файлами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Односвязный кольцевой список, реализовать http://www.cyberforum.ru/cpp-beginners/thread613081.html
Помогите написать и реализовать кольцевой список
C++ Работа со структурой Немогу правильно скоректировать функцию удаления.Место победителей неправильно записываеться т.е удаляя первого победителя то при выводе победителей остануться только 2 и 3 место а 1 уже не будет.И не умею писать фун добавления.ПРошу срочной помощи .(курсовая работа) #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #define dl_num 3 ... http://www.cyberforum.ru/cpp-beginners/thread613037.html
Найти ошибку в коде. C++
#include <iostream> using namespace std; int main() { setlocale(0, ""); int c, b, a; //a - первое число; b - второе число; c - выбор операции +, -, /, *, cout << "Введите число от 1 до 4"; <<endl; cin >> c; if (с == 1) {
Вещественный массив C++
Дан вещественный массив А . Определить значения вещественного массива Е по правилу: E=Сумме значений i-ой строки массива А, если А>0 E=0 A<=0 Значение переменной i меняется от 0 до 4.
C++ Найти минимальную длину пути http://www.cyberforum.ru/cpp-beginners/thread613021.html
На поверхности планеты, являющейся шаром с радиусом R, заданы две точки со своими широтой и долготой. Найти минимальную длину пути по поверхности этой планеты из одной точки в другую. Ограничения:широта-в градусах -90 до 90, долгота в градусах от -180 до 180, 100<R<10000, все числа вещественные. На С++
C++ Оформить одномерный массив в виде функций и снова я мучаюсь с функциями:wall: и кажется снова они получились вложенными:gscratch: 1.) вычислить номер максимального по модулю элемента массива #include "iostream.h" #include "stdlib.h" #include "stdio.h" #include "math.h" подробнее

Показать сообщение отдельно
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
25.06.2012, 17:07  [ТС]     Скорость выполнения, а так же работа с дв. файлами
7) Цикл ищет максимальную тройку элементов в двумерном массиве, при этом эти элементы должны соприкосаться друг с другом (без рекурсии, тупо в лоб) :

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
for (int i=n-1; i >= -1 && maxSum != 300; --i)
    {
        for (int j=n-1; j >= 0 && maxSum != 300; --j)
        {
            if (i > -1)
                scanf("%d", &a[i][j]);
            if (i < n-1 && a[i+1][j] > maxSum-200)
            {
                if (i+3 < n)
                    if (a[i+1][j] + a[i+2][j] + a[i+3][j] > maxSum)
                        maxSum = a[i+1][j] + a[i+2][j] + a[i+3][j];
                
                if (j+2 < n)
                    if (a[i+1][j] + a[i+1][j+1] + a[i+1][j+2] > maxSum)
                        maxSum = a[i+1][j] + a[i+1][j+1] + a[i+1][j+2];
 
                if (i < n-2 && j != n-1)
                {
                    if (a[i+1][j] + a[i+2][j] + a[i+2][j+1] > maxSum)
                        maxSum = a[i+1][j] + a[i+2][j] + a[i+2][j+1];
                    if (a[i+1][j] + a[i+1][j+1] + a[i+2][j+1] > maxSum)
                        maxSum = a[i+1][j] + a[i+1][j+1] + a[i+2][j+1];
                }
 
                if (i < n-2 && j != 0)
                {
                    if (a[i+1][j] + a[i+2][j] + a[i+2][j-1] > maxSum)
                        maxSum = a[i+1][j] + a[i+2][j] + a[i+2][j-1];
                    if (a[i+1][j] + a[i+1][j-1] + a[i+2][j-1] > maxSum)
                        maxSum = a[i+1][j] + a[i+1][j-1] + a[i+2][j-1];
                }
            }
        }
    }
(здесь я совмести ввод и проверку, поэтому проверка идет от i+1 (а именно, мы даем считать одну строчку, а уже затем проверяем. После этого цикла есть ещё один, который проверяет последнюю строчку, но он не так важен для моего вопроса)
Этот цикл для N=2000 работает на порядок быстрее, чем цикл от 0 -> N.

4)
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
46
47
48
49
50
51
52
53
54
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
 
void IsEOF(FILE *v)
{
    printf("File is : ");
    if (feof(v))
        printf("End of File\n");
    else
        printf("Reading/Writing\n");
}
 
void main()
{
    freopen("input.dat", "wb", stdin);
    rewind(stdin);
    printf("Read from the file\n\n");
 
    int number = 777, temp;
    for (int i=0; i<10; i++)
        fwrite(&number, sizeof(number), 1, stdin);
 
    freopen("input.dat", "rb", stdin);
    rewind(stdin);
 
    printf("Read 10 numbers ");
    for (int i=0; i<10; i++)
    {
        fread(&temp, sizeof(temp), 1, stdin);
        //printf("%d ", temp);
    }
    printf("\n");
 
    IsEOF(stdin);
    printf("Read one more \n");
    fread(&temp, sizeof(temp), 1, stdin);
    IsEOF(stdin);
 
    rewind(stdin);
    printf("\nDon't read something now.\n\n");
 
    printf("'fseek'ing 10 numbers\n");
    fseek(stdin, 10*sizeof(number), SEEK_SET);
    IsEOF(stdin);
    printf("'fseek' one more\n");
    fseek(stdin, sizeof(number), SEEK_CUR);
    IsEOF(stdin);
    printf("'fseek' 11 numbers per command\n");
    fseek(stdin, 11*sizeof(number), SEEK_SET);
    IsEOF(stdin);
 
    _getch();
}

За inline и логарифмы спасибо, позже прочитаю ^^
p.s Жаль, что cpp не подгружается..
 
Текущее время: 13:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru