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

Ошибка - в файле хз.doc.
...
Рейтинг: 0 / 0
массивы в с++
    #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
массивы в с++
    #38456541
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unker,

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

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

Ну и если не поможет то приведите описание проблемы и текст ошибки, и выводится ли она при компиляции или исполнении.
Гадать никто не будет.
...
Рейтинг: 0 / 0
массивы в с++
    #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
массивы в с++
    #38456637
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
unker, ну наверное в этой строчке
if(a[i][j]>b[i]) c[i]=a[i][j];
...
Рейтинг: 0 / 0
массивы в с++
    #38456644
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unkero,5
В вот так и вводите число? Буква О, запятая, 5 ? Серьезно?
Или все-таки в правильном формате: 0.5
...
Рейтинг: 0 / 0
массивы в с++
    #38456649
unker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Moskovsky,
нет, конечно 0,5
а как исправить ту строку нужно? не подскажите?
...
Рейтинг: 0 / 0
массивы в с++
    #38456730
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unker0,5
с запятой или точкой?

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

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

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

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

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

а можете это в самой проге подделать?
...
Рейтинг: 0 / 0
массивы в с++
    #38457617
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unker,
100 к 0, что сможет.
А вы можете спросить у поисковика строку
"NO_MINMAX" c++ ?
заодно узнаете, что такое директива препроцессора дефайн
...
Рейтинг: 0 / 0
массивы в с++
    #38458528
unker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕСЛИ ПРОСТО ПЕРЕИМЕНОВАТЬ MAX И MIN, НИЧЕГО НЕ ИЗМЕНИЛОСЬ, ВСЕ ТАКЖЕ НЕ ВЕРНО СЧИТАЕТ(
...
Рейтинг: 0 / 0
массивы в с++
    #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
массивы в с++
    #38458550
unker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выбрать из каждой строчки максимальный и минимальный элементы, потом e*max+(1-е)*min. Из полученных значений выбрать максимальное (ну и чтоб он выводил номер строчки)
...
Рейтинг: 0 / 0
массивы в с++
    #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
массивы в с++
    #38459423
unker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FLT_MIN: необъявленный идентификатор
error C2065: FLT_MAX: необъявленный идентификатор
error C2065: FLT_MIN: необъявленный идентификатор
...
Рейтинг: 0 / 0
массивы в с++
    #38459431
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unker,

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

а что это означает, мне это нужно в прогу добавить?
...
Рейтинг: 0 / 0
массивы в с++
    #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
массивы в с++
    #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
массивы в с++
    #38459445
unker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman, а она наверное просто выводит номер строки и максимальный элемент?
...
Рейтинг: 0 / 0
массивы в с++
    #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
массивы в с++
    #38459468
unker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman,

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


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