Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / массивы в с++ / 25 сообщений из 47, страница 1 из 2
07.11.2013, 16:03
    #38456413
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
подскажите, в чем ошибка?
...
Рейтинг: 0 / 0
07.11.2013, 16:36
    #38456501
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unker,

Ошибка - в файле хз.doc.
...
Рейтинг: 0 / 0
07.11.2013, 16:41
    #38456525
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
Anatoly Moskovsky,
логично)
Код: plaintext
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.
#include "stdafx.h"
#include "math.h"
#include "conio.h"
#include "cmath"
#include "stdlib.h"

int _tmain(int argc, _TCHAR* argv[])
{
    int i,j,p;
    float a[4][4],max,min,e,b[4],c[4],d[4];
    printf("vvedite =");
    scanf("%f",&e);
    for(i=0;i<4;i++)
    for(j=0;j<4;j++)
    {
        printf("a[%d][%d]=",i+1,j+1);
        scanf("%f",&a[i][j]);
    }
    
    for(i=0;i<4;i++);
    {
        b[i]=a[i][0]; c[i]=a[i][0];
        for j=(0;j<4;j++)
        {
            if(a[i][j]<b[i]) b[i]=a[i][j];
            if(a[i][j]>b[i]) c[i]=a[i][j];
        }
    }
    
    for(i=0;i<4;i++)
    d[i]=e*c[i]+(1-e)*b[i];
    max=d[0];
    for(i=0;i<4;i++)
    if(d[i]>max)
    {
        max=d[i];
        p=i;
    }
    printf("\t max %d",p);
    system("PAUSE");
    return 0;
}
...
Рейтинг: 0 / 0
07.11.2013, 16:51
    #38456541
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unker,

А почему вы решили что вообще есть ошибка?

Правда я у вас в коде вижу переменные max,min.
Под виндой возможен конфликт имен с макросами объявленными в winapi.
Поэтому для начала переименуйте их.

Ну и если не поможет то приведите описание проблемы и текст ошибки, и выводится ли она при компиляции или исполнении.
Гадать никто не будет.
...
Рейтинг: 0 / 0
07.11.2013, 17:13
    #38456599
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
Anatoly Moskovsky,
дела в том, что он считает неправильно. Вот пример e=o,5 и массив
4 1 5 -1
8 2 -3 6
10 -1 8 4
4 5 -1 9.
По идеи он должен вывести 2, так как в третий строчке получится максимальное значение, а он выводит 1. и с другими массивами проверял, считает не так почему-то
...
Рейтинг: 0 / 0
07.11.2013, 17:32
    #38456637
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unker, ну наверное в этой строчке
if(a[i][j]>b[i]) c[i]=a[i][j];
...
Рейтинг: 0 / 0
07.11.2013, 17:35
    #38456644
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unkero,5
В вот так и вводите число? Буква О, запятая, 5 ? Серьезно?
Или все-таки в правильном формате: 0.5
...
Рейтинг: 0 / 0
07.11.2013, 17:36
    #38456649
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
Anatoly Moskovsky,
нет, конечно 0,5
а как исправить ту строку нужно? не подскажите?
...
Рейтинг: 0 / 0
07.11.2013, 18:02
    #38456730
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unker0,5
с запятой или точкой?

Потому что если - с запятой, то введется 0, и ваш алгоритм выведет что-то другое, а не то что вы планировали :)
...
Рейтинг: 0 / 0
07.11.2013, 18:21
    #38456764
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
я ввожу через точку: 0.5
...
Рейтинг: 0 / 0
08.11.2013, 00:05
    #38457135
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
Anatoly Moskovskyunker,

А почему вы решили что вообще есть ошибка?

Правда я у вас в коде вижу переменные max,min.
Под виндой возможен конфликт имен с макросами объявленными в winapi.
Поэтому для начала переименуйте их.

Ну и если не поможет то приведите описание проблемы и текст ошибки, и выводится ли она при компиляции или исполнении.
Гадать никто не будет.

NO_MINMAX можно определить, и не будет конфликта.
...
Рейтинг: 0 / 0
08.11.2013, 11:03
    #38457489
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
MasterZiv,

а можете это в самой проге подделать?
...
Рейтинг: 0 / 0
08.11.2013, 12:03
    #38457617
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unker,
100 к 0, что сможет.
А вы можете спросить у поисковика строку
"NO_MINMAX" c++ ?
заодно узнаете, что такое директива препроцессора дефайн
...
Рейтинг: 0 / 0
08.11.2013, 23:57
    #38458528
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
ЕСЛИ ПРОСТО ПЕРЕИМЕНОВАТЬ MAX И MIN, НИЧЕГО НЕ ИЗМЕНИЛОСЬ, ВСЕ ТАКЖЕ НЕ ВЕРНО СЧИТАЕТ(
...
Рейтинг: 0 / 0
09.11.2013, 00:25
    #38458537
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unker,

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

Правда я вот счас глянул еще раз на код и бросилось в глаза

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    for(i=0;i<4;i++); // это явный баг
    {
        b[i]=a[i][0]; c[i]=a[i][0];
        for j=(0;j<4;j++)
        {
            if(a[i][j]<b[i]) b[i]=a[i][j];
            if(a[i][j]>b[i]) c[i]=a[i][j];
        }
    }


Хотя может это модератор когда форматировал за ваc ваш текст случайно вставил (как и & lt; вместо <)
...
Рейтинг: 0 / 0
09.11.2013, 00:47
    #38458550
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
Выбрать из каждой строчки максимальный и минимальный элементы, потом e*max+(1-е)*min. Из полученных значений выбрать максимальное (ну и чтоб он выводил номер строчки)
...
Рейтинг: 0 / 0
09.11.2013, 07:14
    #38458618
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unker,

Код: plaintext
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.
#include <stdio.h>
#include <limits.h>

#define N 4

int main() {
	float a[N][N], b[N], c[N], d[N], e, max;
	int i, j, p;
	printf("e = ");
	scanf("%f", &e);
	max = FLT_MIN;
	for (i = 0; i < N; i++) {
		b[i] = FLT_MAX;
		c[i] = FLT_MIN;
		for (j = 0; j < N; j++) {
			printf("a[%d][%d] = ", i + 1, j + 1);
			scanf("%f", &a[i][j]);
			if (a[i][j] > c[i]) {
				c[i] = a[i][j];
			}
			if (a[i][j] < b[i]) {
				b[i] = a[i][j];
			}
			d[i] = e * c[i] + (1-e) * b[i];
			if (d[i] > max) {
				max = d[i];
				p = i;
			}
		}
	}
	printf("Maximum is D[%d] = %f\n", p, max);
	return 0;
}
...
Рейтинг: 0 / 0
10.11.2013, 17:22
    #38459423
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
FLT_MIN: необъявленный идентификатор
error C2065: FLT_MAX: необъявленный идентификатор
error C2065: FLT_MIN: необъявленный идентификатор
...
Рейтинг: 0 / 0
10.11.2013, 17:37
    #38459431
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unker,

Код: plaintext
1.
2.
#define FLT_MAX         3.402823466e+38F
#define FLT_MIN         1.175494351e-38F
...
Рейтинг: 0 / 0
10.11.2013, 17:47
    #38459436
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
Usman,

а что это означает, мне это нужно в прогу добавить?
...
Рейтинг: 0 / 0
10.11.2013, 17:59
    #38459438
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unkerа что это означаетОпределение констант. Минимальное и максимальное вещественные числа.
unkerмне это нужно в прогу добавить?Да.
Развернуть
Код: plaintext
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.
#include <stdio.h>
#include <limits.h>

#define N 		4
#define FLT_MAX         3.402823466e+38F
#define FLT_MIN         1.175494351e-38F

int main() {
	float a[N][N], b[N], c[N], d[N], e, max;
	int i, j, p;
	printf("e = ");
	scanf("%f", &e);
	max = FLT_MIN;
	for (i = 0; i < N; i++) {
		b[i] = FLT_MAX;
		c[i] = FLT_MIN;
		for (j = 0; j < N; j++) {
			printf("a[%d][%d] = ", i + 1, j + 1);
			scanf("%f", &a[i][j]);
			if (a[i][j] > c[i]) {
				c[i] = a[i][j];
			}
			if (a[i][j] < b[i]) {
				b[i] = a[i][j];
			}
			d[i] = e * c[i] + (1-e) * b[i];
			if (d[i] > max) {
				max = d[i];
				p = i;
			}
		}
	}
	printf("Maximum is D[%d] = %f\n", p, max);
	return 0;
}


...
Рейтинг: 0 / 0
10.11.2013, 18:12
    #38459444
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
Usman,

а это программа так считает?
есть массив
9 6 -3 5
16 -7 4 9
8 -3 9 15
13 10 -2 -5, при этом е=0.5
она считает как
9*0.5-3*0.5=3
16*0.5=5-7*0.5=4.5
15*0.5-3*0.5=6
13*0.5-5*0.5=4
и выводит 6?
...
Рейтинг: 0 / 0
10.11.2013, 18:16
    #38459445
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
Usman, а она наверное просто выводит номер строки и максимальный элемент?
...
Рейтинг: 0 / 0
10.11.2013, 18:39
    #38459459
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
unker,

У меня результат получился такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 
e = 0.5
a[1][1] = 9
a[1][2] = 6
a[1][3] = -3
a[1][4] = 5
a[2][1] = 16
a[2][2] = -7
a[2][3] = 4
a[2][4] = 9
a[3][1] = 8
a[3][2] = -3
a[3][3] = 9
a[3][4] = 15
a[4][1] = 13
a[4][2] = 10
a[4][3] = -2
a[4][4] = -5
Maximum is D[1] = 16.000000
 
...
Рейтинг: 0 / 0
10.11.2013, 18:52
    #38459468
unker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
массивы в с++
Usman,

у меня также, только по заданию он должен вывести не 16, а максимальный элемент из тех, которые вычисляются по формуле e*max+0,5*min, а там получается не 16, а 6 в третей строке
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / массивы в с++ / 25 сообщений из 47, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]