#include <stdio.h>
#include <stdlib.h>
int main()
{
int mas[3][3];
int i,l,j,a=3,b=3;
float arf;
printf("Vvedite mas\n");
for(i=1;i<=a;i++){
for(j=1;j<=b;j++)
{
mas[i][j]=i*j;
printf(" %i",mas[i][j]);
}
printf(" \n\n");
}
su(a,b,mas);
getch();
return 0;
}
su(int a,int b,int*mas )
{
int i,j;
for(i=1;i<=a;i++){
for(j=1;j<=b;j++)
{
if(mas[i][j]>5){
}
}
}
}
ошибка: 37 L:\43.c subscripted value is neither array nor pointer
хочу передать массив у функцию, п по идеи хочу посчитать количество нулей (не столь важно ) проблема в том что когда я в самой функцию делаю операцию над массивом выводит ошибку, что делать? как обойти ее ,,,потом если получается хочу в функции создать 2 переменные и сохранить данные где очень много и там где их мало ,,,вопрос как теперь передать этих 2 переменные в основную функцию ???спасибо
Другие языки программирования и технологии
Привет, помогите с программированием на СИ, передача массива в функцию..
#include <stdio.h>
#define ROWS 3
#define COLS 3
int zerocount(int*);
void output(int*);
int main() {
int matrix[ROWS][COLS];
int* ptr = &matrix[0][0]; // через указатель, например.. .
int r, c;
printf("\n Input array:\n");
for (r = 0; r < ROWS; ++r) {
for (c = 0; c < COLS; ++c) {
printf(" matrix[%i][%i] -> ", r, c);
scanf_s("%i", &matrix[r][c]);
}
}
printf("\n");
output(ptr);
printf(" Count = %i\n", zerocount(ptr));
fflush(stdin);
getchar();
return(0);
}
void output(int* vector) {
int c, n, size = ROWS * COLS;
for (n = 0, c = 1; n < size; ++n, ++c) {
printf("%4i", vector[n]);
if (0 == c % COLS) printf("\n");
}
printf("\n");
}
int zerocount(int* vector) {
int zc = 0, size = ROWS * COLS;
while (--size >= 0) if (!vector[size]) ++zc;
return zc;
}
#define ROWS 3
#define COLS 3
int zerocount(int*);
void output(int*);
int main() {
int matrix[ROWS][COLS];
int* ptr = &matrix[0][0]; // через указатель, например.. .
int r, c;
printf("\n Input array:\n");
for (r = 0; r < ROWS; ++r) {
for (c = 0; c < COLS; ++c) {
printf(" matrix[%i][%i] -> ", r, c);
scanf_s("%i", &matrix[r][c]);
}
}
printf("\n");
output(ptr);
printf(" Count = %i\n", zerocount(ptr));
fflush(stdin);
getchar();
return(0);
}
void output(int* vector) {
int c, n, size = ROWS * COLS;
for (n = 0, c = 1; n < size; ++n, ++c) {
printf("%4i", vector[n]);
if (0 == c % COLS) printf("\n");
}
printf("\n");
}
int zerocount(int* vector) {
int zc = 0, size = ROWS * COLS;
while (--size >= 0) if (!vector[size]) ++zc;
return zc;
}
Начни с того что в "С" и его потомках нумерация элементов массивов идет не с "1" а с"0"
так что сразу не
for(i=1;i<=a;i++){
а
for(i=0;i< a;i++){
Именно в "С" При передаче в функцию передаётся указатель на начальный элемент без всякого подразумевания о делении на столбцы и строки и слои и гиперкубы и прочее. там просто остаётся вытянутая в линию последовательнось на начало которой указано. и внутри функций ничто не знает о всяких mass[ i][ j][ k].так что передавай туда и размерность для определения чего-то типа
massfunc[ i+j*N +..]
так что сразу не
for(i=1;i<=a;i++){
а
for(i=0;i< a;i++){
Именно в "С" При передаче в функцию передаётся указатель на начальный элемент без всякого подразумевания о делении на столбцы и строки и слои и гиперкубы и прочее. там просто остаётся вытянутая в линию последовательнось на начало которой указано. и внутри функций ничто не знает о всяких mass[ i][ j][ k].так что передавай туда и размерность для определения чего-то типа
massfunc[ i+j*N +..]
Похожие вопросы
- Язык си, двухмерный массив и функция.
- Помогите с программированием на Си
- Помогите с программированием на Си. Задача про треугольники
- Помогите с программированием на си
- Программирование на языке СИ с использованием подпрограммы-функции
- С++.Дан одномерный числовой массив. Написать функции.
- Как можно передать ДВУМЕРНЫЙ массив в функцию в С++, не создавая его, как глобальный. Пример ниже:
- ПОМОГИТЕ СДЕЛАТЬ ПРОГРАММИРОВАНИЕ ЛВУМЕРНЫЙ МАССИВ
- Вопрос массивам и функциям по с++
- Двойной массив в функцию.