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

на языке с - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
10.11.2009, 18:49     на языке с #1
кто сможет помогите пожалуйста!Даны 3 числа а,в,с.Найти значение минимального отклонения каждого из них от среднего арифметического.Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
23.11.2009, 16:51  [ТС]     на языке с #21
Вот по этому заданию(Дана матрица В размером 5х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
#include "stdio.h"
#include "string.h"
#include "conio.h"
void main(void)
{
    const N=5;
    const M=4;
    int B[N][M];
    int i,j;
    int Sum;
    int A[N];
    printf("Vvedite elementi matrici B%dx%d:\n",N,M);
    for(i=0;i<N;i++)
        for(j=0;j<M;j++)
        {
            printf("B[%d][%d]=",i,j);
            scanf("%d",&B[i][j]);
        }
 
    printf("Vi vveli matricu:\n");
    for(i=0;i<N;i++)
    {
    Sum=0;
        for(j=0;j<M;j++)
          Sum=Sum+B[i][j];
          A[i]=Sum;
    }
    printf("Ї®«гзҐ**л© ўҐЄв®а A\n");
    For(i=0;i<N;i++)
       scanf("%d",&A[i]);
    printf("Press any key\n");
    getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.11.2009, 17:20     на языке с #22
Цитата Сообщение от снег Посмотреть сообщение
#include "stdio.h" #include "string.h" #include "conio.h"
C
1
2
3
#include <stdio.h>
#include <string.h>
#include <conio.h>
Цитата Сообщение от снег Посмотреть сообщение
for(i=0;i<N;i++) {
Sum=0;
for(j=0;j<M;j++)
Sum=Sum+B[i][j];
A[i]=Sum;
}
скобку пропустил
C
1
2
3
4
5
6
7
for(i=0;i<N;i++) { 
    Sum=0; 
    for(j=0;j<M;j++) {
        Sum=Sum+B[i][j]; 
        A[i]=Sum;
    } 
}

Цитата Сообщение от снег Посмотреть сообщение
printf("Ї®«гзҐ**л© ўҐЄв®а A\n"); For(i=0;i<N;i++) scanf("%d",&A[i]);
Не знаю, что там в строке написано, но дальше зачем-то элементы массива А (то есть те, которые при суммировании строк из В получались) зачем-то меняются на вводимые с клавиатуры...
Я так думаю - их вывести надо было...
C
1
2
for (i = 0; i < N; i++ )
    printf("%d\n", A[i]);
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
23.11.2009, 21:39  [ТС]     на языке с #23
Спасибо за помощь!!!!!!!!Набираю программу,в итоге выходит длинный ряд из нулей.И при этом она зацикливается.Что делать?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
24.11.2009, 00:15     на языке с #24
снег, вот
так
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>
 
#define ROWS 5
#define COLS 4
    
/*  
    Дана матрица В размером 5х4. Составить программу формирования вектора, 
    элементы которого равны сумме элементов строк матрицы В
*/
    
int main(void){
    int B[ROWS][COLS];
    int V[ROWS] = {0};
    size_t i, j;
    
    for ( i = 0; i < ROWS; i++ ){
        for ( j = 0; j < COLS; j++ ){
            printf("B[%d][%d] = ", i, j);
            scanf("%d", &B[i][j]);
        }
    }
    
    for ( i = 0; i < ROWS; i++ )
        for ( j = 0; j < COLS; j++ )
            V[i] += B[i][j];
    
    printf("\n-----------------------------\n");
    
    for ( i = 0; i < ROWS; i++ ){
        for ( j = 0; j < COLS; j++ )
            printf( ( j < COLS - 1 ) ? "%d + " : "%d = ", B[i][j]);
        printf("%d\n", V[i]);
    }
    
    return 0;
}
работает...
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
24.11.2009, 09:42  [ТС]     на языке с #25
Даже не знаю как вас благодарить!Огромное спасибо!!!!
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
24.11.2009, 16:12  [ТС]     на языке с #26
easybudda!Я наверное уже вас замучила.Но появился еще вопрос.Программа которую вы мне сделали идет, я ввожу матрицу 1 1 0 1 2
0 0 2 1 0
1 0 0 0 1
1 1 1 1 2
Программа выдает ответ:1+1+0+1=3
2+0+0+2=4
1+0+1+0=2
1+1+1+2=5.Почему так?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.11.2009, 16:28     на языке с #27
Ладно, пока easybudda нет я отвечу, надеюсь он не обидится.
Размер матрицы у Вас 5*4 (5 строк, 4 столбца), а это значит, что
Цитата Сообщение от снег Посмотреть сообщение
я ввожу матрицу 1 1 0 1 2
0 0 2 1 0
1 0 0 0 1
1 1 1 1 2
Вы на самом деле вводите:
1101
2002
1010
0011
1112
и результат получаете соответствующий.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
24.11.2009, 16:51     на языке с #28
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Ладно, пока easybudda нет я отвечу, надеюсь он не обидится.
Размер матрицы у Вас 5*4 (5 строк, 4 столбца)
А чего обижаться-то? Всё правильно.

снег, так уж повелось, что сначала количество строк указывают, а потом количество столбцов
C
1
2
#define ROWS 5
#define COLS 4
Row - ряд по-английски, Column (COLS сокращение от COLUMNS) - колонка... Хотите, чтобы было, как Вы вводите, поменяйте
C
1
2
#define ROWS 4
#define COLS 5
Но тогда как-бы не по заданию получится...
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
24.11.2009, 17:49  [ТС]     на языке с #29
Теперь я поняла!!!В который раз говорю СПАСИБО!!!
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
29.11.2009, 18:37  [ТС]     на языке с #30
А не могли бы вы решить еще вот эти 2 задачки?
1.Составить функции определения минимального и максимального элементов в одномерном массиве. Используя их, найти минимум среди максимальных элементов строк матрицы.
2. Описать массив записей, содержащий информацию об итогах сдачи вами экзаменационных сессий в институте. Определить средний балл.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
29.11.2009, 21:47     на языке с #31
Цитата Сообщение от снег Посмотреть сообщение
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define MAX_VAL 100
#define ROWS 5
#define COLS 10
 
/*
    Составить функции определения минимального и максимального элементов в одномерном массиве.
*/
 
/* возвращает указатель на самый большой элемент в массиве, если их несколько - на первый из них */
const int *maxElement(const int *arr, size_t count){
    const int *pArr, *pMax;
    int max_val;
    
    if ( !arr || !count )
        return NULL;
    
    pMax = arr;
    max_val = *pMax;
    for ( pArr = arr + 1; pArr < arr + count; pArr++ ){
        if ( *pArr > max_val ){
            pMax = pArr;
            max_val = *pMax;
        }
    }
    return pMax;
}
 
/* возвращает указатель на самый маленький элемент в массиве, если их несколько - на первый из них */
const int *minElement(const int *arr, size_t count){
    const int *pArr, *pMin;
    int min_val;
    
    if ( !arr || !count )
        return NULL;
        
    pMin = arr;
    min_val = *pMin;
    for ( pArr = arr + 1; pArr < arr + count; pArr++ ){
        if ( *pArr < min_val ){
            pMin = pArr;
            min_val = *pMin;
        }
    }
    return pMin;
}
 
/*
    Используя их, найти минимум среди максимальных элементов строк матрицы.
*/
 
int main(void){
    int matr[ROWS][COLS];
    int max_vals[ROWS] = { 0 };
    const int *pVal = NULL;
    size_t i, j;
    
    srand(time(NULL));
    /* заполнить матрицу */
    for ( i = 0; i < ROWS; i++ )
        for ( j = 0; j < COLS; j++ )
            matr[i][j] = rand() % MAX_VAL;
    
    /* получить максимальные значения для каждой строки, занести в массив max_vals */
    for ( i = 0; i < ROWS; i++ ){
        if ( (pVal = maxElement(matr[i], COLS)) == NULL ){
            fprintf(stderr, "Shit happens!\n");
            exit(1);
        }
        max_vals[i] = *pVal;
    }
    
    /* вывод матрицы */
    printf("\nOriginal matrix:\n");
    for ( i = 0; i < ROWS; i++ )
        for ( j = 0; j < COLS; j++ )
            printf( ( j < COLS - 1 ) ? "%02d " : "%02d\n", matr[i][j]);
            
    /* максимальные значения для каждого ряда */
    printf("\nMax values for each row:\n");
    for ( i = 0; i < ROWS; i++ )
        printf("%02d ", max_vals[i]);
    printf("\nMinimum from them: ");
    if ( (pVal = minElement(max_vals, ROWS)) == NULL ){
        fprintf(stderr, "Shit happens!\n");
        exit(1);
    }
    printf("%d\n", *pVal);
    
    exit(0);
}
Добавлено через 1 час 12 минут
Цитата Сообщение от снег Посмотреть сообщение
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
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define NAME_LEN 40
 
/*
    Описать массив записей, содержащий информацию об итогах сдачи вами экзаменационных сессий в институте. 
    Определить средний балл
*/
 
typedef struct {
    char name[NAME_LEN];
    int score;
} Subject_t;
 
/* заполняет структуру */
void fillSubject(Subject_t *s){
    printf("Subject name: ");
    if ( fgets(s->name, NAME_LEN, stdin) == NULL ){
        fprintf(stderr, "Error while getting subject name!\n");
        exit(1);
    }
    s->name[strlen(s->name) - 1] = '\0';
    printf("Subject score: ");
    if ( !scanf("%d", &s->score) ){
        fprintf(stderr, "Error while getting subject score!\n");
        exit(1);
    }
    getchar(); /* удалить \n из потока ввода */
}
 
int main(void){
    Subject_t *session = NULL;
    size_t count = 0, i;
    int all_scores = 0;
    double  average_score = 0.0;
    
    printf("Number of subjects: ");
    scanf("%d", &count);
    getchar();
    
    if ( !count ){
        fprintf(stderr, "Bad value for number of subjects!\n");
        exit(1);
    }
    
    if ( (session = (Subject_t*)calloc(count, sizeof(Subject_t))) == NULL ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    
    for ( i = 0; i < count; i++ )
        fillSubject(session + i);
        
    /* вычисление среднего балла */
    for ( i = 0; i < count; i++ )
        all_scores += (session[i]).score;
    average_score = (double)all_scores / (double)count;
    
    /* вывод */
    printf("\nAll subjects:\n");
    printf("%-40s%-s\n", "Name", "Score");
    for ( i = 0; i < count; i++ )
        printf("%-40s%-d\n", (session[i]).name, (session[i]).score);
    printf("\nAverage score: %.1f\n", average_score);
    
    free(session);
    session = NULL;
    
    exit(0);
}
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
30.11.2009, 09:19  [ТС]     на языке с #32
Огромное СПАСИБО!
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
07.12.2009, 16:26  [ТС]     на языке с #33
По этому заданию(Вычислить значение конечной суммы 1/(2+1)+1/(2*(4+1))+...+1/(n(2*n+1)) составлена программа,но по-моему она считает не правильно,помогите найти ошибку



C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdio.h"
main()
{
  const int n=3;
  const float x=1;
  float s;
  int i;
  s=0;//nachalnoe znach dlya nekot summy ravnoy 0
  for(i=1; i<=n;i++)
   {
   s=s+(1.0/(n*(2*n+1)));
   }
   printf ("Znaschenie konechnoy summy ravno: %2f\n\n",s);
   }
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
07.12.2009, 16:29     на языке с #34
C
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdio.h"
main()
{
const int n=3;
const float x=1;
float s;
int i;
s=0;//nachalnoe znach dlya nekot summy ravnoy 0
  for(i=1; i<=n;i++)
      s+=(1.0/(i*(2*i+1)));
printf ("Znaschenie konechnoy summy ravno: %2f\n\n",s);
}
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
07.12.2009, 16:58  [ТС]     на языке с #35
Спасибо
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
21.12.2009, 15:03  [ТС]     на языке с #36
Пожалуйста помогите решить еще вот такую задачку

Пусть задан некоторый файл, компоненты которого являются целыми числами. Подсчитать количество элементов файла, значение которых равно значению последнего элемента.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.12.2009, 17:42     на языке с #37
Цитата Сообщение от снег Посмотреть сообщение
Пусть задан некоторый файл, компоненты которого являются целыми числами. Подсчитать количество элементов файла, значение которых равно значению последнего элемента.
Если файл текстовый, то вот так например:
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>
 
#define F_NAME "test.txt"
 
/* 
    Подсчитать количество элементов файла, 
    значение которых равно значению последнего элемента. 
*/
    
int main(void){
    FILE *f;
    int *arr, num;
    size_t size, count, i;
    
    if ( ( f = fopen(F_NAME, "r") ) == NULL ){
        fprintf(stderr, "%s: Can't open input file!\n");
        exit(1);
    }
    size = 0;
    arr = NULL;
    while ( fscanf(f, "%d", &num) == 1 ){
        if ( ( arr = (int*)realloc(arr, sizeof(int) * (size + 1)) ) == NULL ){
            fprintf(stderr, "Memory error!\n");
            exit(1);
        }
        arr[size++] = num;
    }
    if ( ferror(f) ){
        fprintf(stderr, "Error while reading file!\n");
        exit(1);
    }
    fclose(f);
    if ( !arr || !size ){
        fprintf(stderr, "Empty file or other error!\n");
        exit(1);
    }
    for ( count = 0, i = 0; i < size - 1; ++i )
        if ( arr[i] == arr[size - 1] )
            ++count;
    printf("Found %d elements with value same like last element.\n", count);
    
    free(arr);
    exit(0);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2009, 18:25     на языке с
Еще ссылки по теме:

Вычислить e^x на языке Си C++
GeoTiff - примеры ее использования на языке c , желательно на русском языке C++
C++ Запрограммировать на языке С

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

Или воспользуйтесь поиском по форуму:
снег
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 31
21.12.2009, 18:25  [ТС]     на языке с #38
СПАСИБО!
Yandex
Объявления
21.12.2009, 18:25     на языке с
Ответ Создать тему
Опции темы

Текущее время: 11:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru