Консультация № 187977
07.03.2015, 16:39
150.00 руб.
0 0 0
Здравствуйте! Прошу помощи в следующем вопросе:

мне надо написать программу на языке С в codeblocks или visual studio

из входного потока вводится непрямоугольная матрица целых чисел [Aij] i=1,...,m j=1,...,Ni. Значения M n Ni заранее неизвестны и вводятся из входного потока.
Сформировать вектор, i- ый элемент которого равен сумме цифр всех элементов i- ой строк матрицы.
Исходную матрицу и полученный вектор вывести в выходной поток, с необходимыми комментариями.

заранее спасибо

Приложение:
прилагаю код программы, но там куча ошибок и еще надо дописать саму суть

// lab1.c: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"

struct line{
int n;
int *a;
};

struct line *input_mat(int *n){
int i, j;
struct line *pl;
do{
printf("Vvedite kol-vo strok\n");
scanf_s("%d", *n);
} while (*n <= 0);
if ((pl = (struct line*)malloc(*n*sizeof(struct line))) == NULL)
return 0;

for (i = 0; i<*n; i++){
do{
printf("Vvedite kol-vo elementov stroki %d\n", i + 1);
scanf_s("%d", &pl[i].n);
} while (pl[i].n < 0);
if ((pl[i].a = (int*)malloc(pl[i].n*sizeof(int))) == NULL)
return 0;
for (j = 0; j<pl[i].n; j++){
printf("Vvedite %d element %d ctroki\n", j + 1, i + 1);
scanf_s("%d", &pl[i].a[j]);
}
}
return pl;
}

//Vvivod matr po strokam

void print_mat(struct line *pl, int n){
int i, j;
for (i = 0; i<n; i++){
for (j = 0; j<pl[i].n; j++);
printf("%d%c", pl[i].a[j]);
if (j + 1 == pl[i].n) printf("'\n'"); else printf(" ");
}
}

//osvobogdenie pamati
void mat_free(struct line *pl, int n){
int i;
for (i = 0; i<n; i++)
free(pl[i].a);
free(pl);
}

//vivod massiva
void print_mas(int *a, int n){
int i;
for (i = 0; i < n; i++)
printf("%d", a[i]);
if (i + 1 == n) printf("\n"); else printf(" ");
}

int main(){
struct line *pl;
int n;
int *m;
printf("Vvedite matr\n");
pl = input_mat(&n);
if (pl == NULL){
perror("malloc");
return 1;
}
printf("Isxod matr\n");
print_mat(pl, n);
printf("Rezalt\n");
print_mas(m, n);
system("PAUSE");
free(pl);
return 0;
}

Обсуждение

Форма ответа