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

Ввод\вывод массива через функции

30.06.2009, 15:21. Показов 50529. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите плз исправить) Нужно осуществить ввод\вывод массива
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
#include "stdio.h"
#include "conio.h"
 
#define N 10
#define M 10
void output (int n, int m,float a [N][M]);
void input (int n, int m, float a [N][M]);
//void sort (int n, int m, float b [], float *S);
int main()
{
    float a[N][M], S, S1;
    int i,j, n, m;
    scanf_s("%d %d", &n, &m);
    printf("vvod");
    input(n, m, a);
    printf("vivod");
    output(n, m, a);
    _getch();
}
 
void input (int n, int m, float a[N][M])
{
    int i, j;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
    
        scanf_s("%f", &a[i][j]);
        
    
}
void output (int n, int m,float a[N][M])
{
    int i, j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
            printf("a[%d %d]= %f",i+1, j+1, a[i,j]);
        printf("\n");
    }
}
На выводе нули((
Ошибка как я понимаю во вводе. Как правильно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.06.2009, 15:21
Ответы с готовыми решениями:

Ввод/вывод массива через функции
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define n 5 #define m 6 int main() { int i,j; void input(a); int ...

Ввод и вывод массива через функцию
Здраствуйте, написал программу для ввода/вывода массива с заданным количеством елементов, но не знаю как сделать так, чтобы количество...

Матрицы: переделать код, чтобы он работал через три функции - ввод, вычисление и вывод
Здравствуйте, прошу помочь с изменением кода на языке си. Нужно переделать код, так, чтобы он работал через три функции : ввод, вычисление...

17
9 / 9 / 2
Регистрация: 01.05.2009
Сообщений: 127
30.06.2009, 15:46
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 "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
#define N 2
#define M 2
void output (float a [N][M]);
void input (float a [N][M]);
//void sort (int n, int m, float b [], float *S);
int main()
{
        float a[N][M];
        printf("vvedite massiv\n");
        input(a);
        printf("massiv:\n");
        output(a);
        _getch();
}
 
void input (float a[N][M])
{
        for(int i=0;i<N;i++)
                for(int j=0;j<M;j++)
                    cin>>a[i][j];
        printf("\n");       
}
void output (float a[N][M])
{
        for(int i=0;i<N;i++)
        {
                for(int j=0;j<M;j++)
                       cout<<a[i][j]<<" ";
                printf("\n");
        }
}
1
0 / 0 / 0
Регистрация: 01.10.2008
Сообщений: 30
30.06.2009, 16:07  [ТС]
Спасибо, но не много не так) Необходимо сделать выбор размера массива до 10х10. Нас за это дерут) для этого используются m,n

З.Ы. Нашел ошибку)
printf("a[%d %d]= %f",i+1, j+1, a[i,j])
0
9 / 9 / 2
Регистрация: 01.05.2009
Сообщений: 127
30.06.2009, 20:01
Ну я и сделал N*M. Ты же взял их в define. Зачем брать лишние переменные,если они уже есть)
0
0 / 0 / 0
Регистрация: 01.10.2008
Сообщений: 30
30.06.2009, 23:03  [ТС]
Ну а без N u M не будет массив инициализироваться) а n u m используются уже в самой проге. хз нам препод так показывал..
0
9 / 9 / 2
Регистрация: 01.05.2009
Сообщений: 127
30.06.2009, 23:04
Да я понял о чем ты говориш)))
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
30.06.2009, 23:13
вот эту функцию -
C
1
void output (float a[N][M])
завалить можно так:

C
1
2
float arr[1][M];
output(arr);
(:
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
01.07.2009, 00:24
А потому что матрицы нужно делать нормально.
C
1
double **arr;
И никаких констант - M-ы,N-ы.
0
0 / 0 / 0
Регистрация: 01.10.2008
Сообщений: 30
01.07.2009, 02:54  [ТС]
Цитата Сообщение от odip Посмотреть сообщение
А потому что матрицы нужно делать нормально.
double **arr;

И никаких констант - M-ы,N-ы.
хм.. не понял) можно подробней?)
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
01.07.2009, 10:36
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdlib.h>
 
 
void func( void ) {
 
#define M 10
#define N 20
 
double **arr= NULL;
int i, j;
 
arr= malloc( M*sizeof(double*) );
for ( i= 0; i<M; i++ ) {
    arr[i]= malloc( N*sizeof(double) );
}
 
for ( i= 0; i<M; i++ ) {
    for ( j= 0; j<N; j++ ) {
        arr[i][j]= 0.0;
    }
}
 
}
0
 Аватар для pigah
12 / 12 / 5
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
05.07.2009, 07:35
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
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <cmath>
#include <iomanip>
#include <limits.h>
#include <conio.h>
 
using namespace std;
 
const int N=10,A=-10,B=20;
int i;
 
template <class T>void формирование(T x[],int n=N,int a=A,int b=B);
template <class B>void вывод(B x[],int n=N);
 
int _tmain(int argc, _TCHAR* argv[]){
 
    SetConsoleOutputCP(1251);
    srand(GetTickCount());  
    int a[N];
    double d[N];
    формирование(a);
    cout<<"\n\tМассив a:\n";
    i = 0;
    вывод(a);
    cout<<"\n\n";
    формирование(d);
    cout<<"\tМассив d:\n";
    i = 0;
    вывод(d);
    cout<<"\n\n";
    return 0;
}
 
 
template <class T>void формирование(T x[],int n,int a,int b){
    int i;
    for(i=0;i<n;i++){
        if(sizeof(T)==4)
            x[i]=a+rand()%(b-a+1);
        else
            x[i] = double (a+rand()%(b-a+1))/1.1;
    }//for
}
 
template <class B>void вывод(B x[],int n){//рекурсивная функция 
    if(i<n){
        cout<<setw(12)<<x[i];
        if((i+1)%5 == 0)cout<<"\n";
        i++;
        вывод(x);  
    }   
    //return;
}
0
3 / 3 / 0
Регистрация: 14.12.2008
Сообщений: 30
05.07.2009, 13:04
Можно вопросик?Разве не лучше вместо #define использовать const? Это суть задачи не меняет,просто эта директива устарела....
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
05.07.2009, 13:33
define устарело ?
Очень смешно ))))))
0
3 / 3 / 0
Регистрация: 14.12.2008
Сообщений: 30
05.07.2009, 13:55
Чего смешно?Совсем не смешно!!!!
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
05.07.2009, 14:07
Открой любой системный h-файл и посмотри есть ли там define-ы.
Потом смейся.
0
3 / 3 / 0
Регистрация: 14.12.2008
Сообщений: 30
05.07.2009, 14:09
Так я ж не говорю,что его нельзя использовать....Просто он уже устарел...
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
05.07.2009, 14:13
Хорошо, компнем глубже.
Что с точки зрения программиста значит "устарел" в твоем понимании ?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
06.07.2009, 05:30
Цитата Сообщение от Юляшка
Разве не лучше вместо #define использовать const?
чем больше переменных в глобалке, тем хуже для программы
define даёт возможность убрать его в любой момент, так как он нужен только для мнгновенной замены всех значений
то есть, иными словами, он никак не регистрируется в программе, его как бы нет

глобальная переменная: на первых порах это не видно, но сначала от неё начинает зависеть одна маленькая функция, потом на ней строится большая, потом ещё больше
в результате ты имеешь огромную функцию, а в С++ там вообще классы, которая так плотно зависит от этой переменной в глобалке, что при переносе этого класса тебе приходится таскать за ним эту переменную, потому что переделывать всё просто лень, а без него уже никуда
потом у тебя появляются два три класса, каждый работает с массивами и структурами, в каждой структуре указатель, а почему указатель ? да потому что, если сделать массив, нужно будет ещё одну прилипалу делать, а её, как известно, ничем уже не вытащишь потом, потому что без неё никак, а место для неё одно - тама, где будет видно её в области видимости
ну, вот и прикинь, тебе константу для размера массива нужно будет объявлять в protected: оно тебе надо ? а убрать захочешь что делать будешь ?

ты объявляешь десять констант: A B C D E ...
и все они равны 100
и тебе пофигу, они всё равно неважные, просто на их места установится сотка и такой код пойдёт на компиляцию, у них минус такой, что их нельзя проверить в процессе компиляции, то есть ты не можешь встроить средство для контроля размера массива (типа, а правильный размер у массива, а подходит ли он для дальнейшего ?), то есть, что вставится - то вставится

define работает по всему файлу, его можно определить внутри какой-нибудь функции и он будет работать в другой, его можно перенести из неё наружу и он не меняет своих свойств, потому что его область видимости - файл
не нужно следить а не насоздавалось ли там много дефайнов, потому что это неважно, он не будет зашит в программу, лишние дефайны просто скинутся перед компиляцией

дефайны можно передефайнить, я даже не знаю, в чём было бы преимущество const int, если бы в #define добавили опцию const, может только если бы было #define FVALUE 2.2 можно было бы однозначнее задать размер для 2.2, но его и так задать можно через суффикс #define FVALUE 2.2f

а сам define можно по-разному применять
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
#define LOOP  { int i; for (i = 0; i < 5; i++) printf("Number %d\n", i+1); }
 
main()
{
    LOOP
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2009, 05:30
Помогаю со студенческими работами здесь

Реализовать через отдельные функции ввод динамического массива и нахождение его минимального элемента
Добрый день, необходимо реализовать через отдельные функции ввод динамического массива и нахождение его минимального элемента. Буду...

Определение и вывод номеров минимальных элементов двумерного массива и ввод массива меньшей размерности
Доброго времени суток. Пожалуйста, помогите с решением задания. Заранее спасибо. Исходная задача: В действительном массиве...

Ввод/вывод данных элементов структуры через функцию
Разработать программу учета покупок ювелирного магазина. Данные о покупках хранить в виде массива структур. Итоговая информация должна...

Ввод-вывод двумерного массива
Задание- нужно ввести двумерный массив, записать в него строки заданного с консоли количества. Вроде бы так и сделал в коде, но почему то...

Ввод и вывод одномерного массива
Объясните, пожалуйста, почему мой вариант не верен: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru