Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2009, 03:25   #1
aka_Kiss
Пользователь
 
Аватар для aka_Kiss
 
Регистрация: 23.10.2009
Сообщений: 33
Восклицание ФАЙЛЫ И ЗАПИСЬ В НИХ ДИНАМИЧЕСКИХ МАССИВОВ

Здравствуйте Все !!

Если Вы находитесь на этом форуме, значит Вы - связаны с программированием, которое сейчас очень важное для современного человека и которое очень непонятное как для новичка.

Чтобы получить навык программирования нужно программировать, но можно же одновременно и помогать другим, да?? Тогда я очень нуждаюсь в Вашей помощи обретения такового навыка.

Значит, у меня есть задачка, к которой очень хочется написать код. А так как я новичок, который нуждается в помощи профи, то я именно здесь.

Вот задачка:
Составить программу на языке Си, в которой выполнить:
1. Для одномерных массивов:
1) описать одномерный динамический массив с элементами для представления данных сведения о клиентах (ФИО, год рождения);
2) ввести количество элементов с клавиатуры;
3) ввести значение элементов с клавиатуры;
4) вывести адреса и значения элементов массива в виде таблицы;
5) вычислить значения ФИО самого старшего клиента;
6) сохранить результаты в текстовый файл.
2. Для двухмерных массивов:
1) описать двухмерный динамический массив с элементами типа int;
2) ввести количество элементов в строке и столбце с клавиатуры;
3) заполнить от левого верхнего угла «змейкой» вниз – вправо – вверх - вправо элементы массива с использованием генератора случайных чисел в диапазоне [20,130];
4) вывести адреса и значения элементов массива в виде таблицы;
5) вычислить значения количества отрицательных элементов, больших среднего;
6) сохранить результаты в текстовый файл.

Таблицы:
для одномерного массива
-----------------------------------------------
№| адрес | размер | значения
| | (байт) | ------------------------
| | | ФИО | год
----------------------------------------------

для двумерного
----------------------------------------------
№ | 0 |... | М-1
----------------------------------------------
0 | адрес |... | адрес
значение|... | значение
-----------------------------------------------
...
-----------------------------------------------
N-1| адрес |... |адрес
|значение|... |значение
------------------------------------------------

Вот я что-то написала:
Код:
#include<stdio.h>
#include<conio.h>
 
void print_Mas(/*что именно передавать??*/)  {
printf("+---------------+---------------+--------------------------------+\n");
printf("|     razmer    |     adres     |             znachenie          |\n");
printf("|               |               |-----------------------|--------|\n");
printf("|               |               |     FIO               |  god   |\n");
printf("|---------------|---------------|-----------------------|--------|\n");
for(i=0; i<M; i++) 
  printf("|      %d       |       %x      |      %s               |   %d   |\n",sizeof(n),&n,n,sizeof(g),&g,g);
printf("+---------------+---------------+--------------------------------+\n");
}
 
void print_Matr(/*что именно передавать??*/)  {
printf("+---------------+---------------+--------------------------------+\n");
//как сделать табличку??
// как эти циклы написать??
printf("+---------------+---------------+--------------------------------+\n");
}
 
int **Form_Matrix(int M, int N)
{
int i,j;
int **M1;
M1= (int**)malloc(M*sizeof(int*));
for(i=0;i<M; i++)
 {
 M1[i] = (int*)malloc(N*sizeof(int));
 for(j=0; j<N; j++)
  M1[i][j] = random(111)+20;
 }
return M1;
}
 
void Print_Matrix(int M, int N, float **M1)
{
  int i,j;
    for(i=0;i<M;i++,printf("\n"))
      for(j=0;j<N;j++)
      printf(" %3.1d ",M1[i][j]);
}
 
int Kol(int M, int N,int **M1)
{
int i,j;
int s=0, k=1, s=0, sr=0;
for(i=0; i<M; i++)
 for(j=0; j<N; j++) 
   s=s+M1[i][j];
k=M*N;      
sr=sr/k;
for(i=0; i<M; i++)
 for(j=0; j<N; j++)
   if (M[i][j]>sr && M[i][j]<0) {
   cout++;
   }
printf("\n V MASSIVE");
printf("\n srednee znachenie elementa=%4d", s);
printf("\n kolichestvo otricatelnih elementov,");
printf("\n bolshe srednego=%4d", cout);
return cout;
}
 
void main() {
float **M1, **M2;
//что еще надо описать??
 
printf("\n vvedite kolichestvo elementov massiva:  ");
scanf("%d",&n);
printf("\n vvedite elementi massiva:  ");
scanf("%s",&);
print_Mas();
 
printf("\n vvedite kolichestvo elementov massiva:  ");
scanf("%d%d",&M&N);
M2=Form_Matrix(M,N);
print_Matr();
cout=Kol(M,N,K);
 
  getch();
 
}
Жду помощи в доделывании программы))
keep it simple
aka_Kiss вне форума Ответить с цитированием
Старый 23.10.2009, 08:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сразу вопрос: Это делать на классическом С или можно С++?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.10.2009, 15:17   #3
aka_Kiss
Пользователь
 
Аватар для aka_Kiss
 
Регистрация: 23.10.2009
Сообщений: 33
По умолчанию

все-равно
вот я что-то переделала
Код:
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
 
struct m
{
  int god;
  char name[15];
};
 
 
void Print_Mas (int n) {
 
  int i,bl=0,k1;
  struct m client[15] ;
 
  for (i=0; i<n; i++) {
    cout << "vvedite imya"<<endl;
    cin >> client[i].name;
    cout << "vvedite god"<<endl;
    cin >> client[i].god;
    if (bl < client[i].god) {
      bl = client[i].god;
      k1 = i;
 
    }
  }
  printf("+---------------+---------------+--------------------------------+\n");
  printf("|     razmer    |     adres     |            znachenie           |\n");
  printf("|               |               |-----------------------|--------|\n");
  printf("|               |               |          imya         |  god   |\n");
  printf("|---------------|---------------|-----------------------|--------|\n");
  for(i=0; i<n; i++) {
    printf("|      %d       |      %x     |          %s         |   %d   |\n",
    sizeof(client[i]),&client[i],client[i].name,client[i].god);
    printf("+---------------+---------------+--------------------------------+\n");
  }
   printf("\n starchij klient:");
   printf("%s",client[k1].name);
   printf("\n\n");
}
 
void Print_Matr (int n, int m) {
 int *a;
  int sr;
  int s=0;
  int k=0;
  int i;
  int cout;
  int j;
 
  int l=0;
  int l1=1;
  int l2=1;
  int zz;
   FILE *f;
  a=new int[n*m];
  for(j=(m-1);j>=0;j--) {
    for(i=l;l1<=n;i=i+l2) {
      *(a+j*m+i)=20+random(111);
      l1++;
      if (*(a+j*m+i)<0) {
        k++;
        s=s+*(a+j*m+i);
      }
      printf("%d\n",*(a+j*m+i));
    }
  l1=1;
  l2=(-1)*l2;
  zz=1-l2;
  if(zz==2)
    zz=1;
    l=(n-1)*zz;
   }
   printf("\n\n");
   sr=s/k;
   cout++;
   for(i=0;i<n;i++) {
     for(j=0;j<m;j++)
       printf("  ad=%x zn=%d   ",(a+j*m+i),*(a+j*m+i));
       printf("\n\n");
     }
     printf("kol-vo=%d",cout);
     if(!(f=fopen("test.txt","w+t"))) {
       printf("error\n");
       return;
     }
   for(i=0;i<n;i++) {
     for(j=0;j<m;j++)
       fprintf(f,"  ad=%x zn=%d   ",(a+j*m+i),*(a+j*m+i));
       fprintf(f,"\n\n");
     }
   fprintf(f,"kol-vo=%d",cout);
   printf("\nrez udachno dobavl v test.txt");
   delete[]a;
   fclose(f);
}
 
void main() {
  int n,m;
 
  clrscr();
 
  printf("vvedite kol-vo klientov:\n");
  scanf("%d",&n);
  Print_Mas (n);
 
 
  printf("vvedite kol-vo strok:\n");
  scanf("%d",&n);
  printf("vvedite kol-vo stolbcov:\n");
  scanf("%d",&m);
  Print_Matr (n,m);
 
  getch();
}
но трабл в выводе таблички
и заполнении от левого верхнего угла «змейкой» вниз – вправо – вверх - вправо,
и кол-во отрицательных элементов, больших среднего тоже неправильно находит

помогите решить
очень нужно и очень срочно
keep it simple
aka_Kiss вне форума Ответить с цитированием
Старый 29.10.2009, 15:20   #4
aka_Kiss
Пользователь
 
Аватар для aka_Kiss
 
Регистрация: 23.10.2009
Сообщений: 33
По умолчанию

табличка
Изображения
Тип файла: jpg Безымянный.JPG (13.0 Кб, 210 просмотров)
keep it simple
aka_Kiss вне форума Ответить с цитированием
Старый 09.11.2009, 00:43   #5
aka_Kiss
Пользователь
 
Аватар для aka_Kiss
 
Регистрация: 23.10.2009
Сообщений: 33
По умолчанию

всем спасибо за внимание !!
тему можно удалять - программка уже написанная
keep it simple
aka_Kiss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы,запись Chief Паскаль, Turbo Pascal, PascalABC.NET 6 31.05.2009 19:47
Разработка программ по обработки динамических массивов произвольной размерности aka_faith Общие вопросы C/C++ 1 24.05.2009 13:34
обработка динамических массивов funky Помощь студентам 0 11.05.2009 17:53
C++. Объявление динамических массивов. Парсифаль Помощь студентам 27 03.05.2009 23:21
Как работать с файлами с помощью динамических массивов Герыч Общие вопросы Delphi 4 10.01.2008 12:22