Читайте также: |
|
Для инициализации двумерного массива следует при объявлении массива в фигурных скобках записать список констант, значения которых присваиваются элементам массива.
Например, массив table [3][4] может быть инициализирован так:
int table [3][4] = {
{5,8,9,7},
{3, 6, 4, 7},
{6, 2, 1, 0}
};
Массив table будет заполнен так:
Если констант в списке будет указано меньше, чем элементов массиве, то оставшиеся значения элементов массива не определены. Например, при инициализации массива table следующим образом:
int table [3][4] = {
{5,8 },
{3, 6, 4, 7},
{6, 1, 0}
};
Массив table будет заполнен так:
В пустых клеточках значения элементов массива не определены.
Пример 1. Пусть в маленькой гостинице имеется 10 комнат. Известны номера комнат: 102,107,109,112,115,116,123,125,127,130 и вместимость каждой комнаты соответственно: 12,43,23,12,20,15,16,23,12,15. Рассмотрим задачу поиска и вывода списка комнат, вместимость которых составляет не меньше значения, вводимого с клавиатуры.
#include <stdio.h>
//объявление двумерного массива room. Значения элементов первой строки массива
//представляют собой номера комнат,
//а значения элементов второй строки – вместимость комнат
int room[2][10]= {
{102,107,109,112,115,116,123,125,127,130},
{12,43,23,12,20,15,16,23,12,15}
};
void main (void)
{
int i,j, flag=0,num;
//вывод вместимости всех комнат гостиницы
puts("Вместимость всех комнат гостиницы:");
for(j=0; j<10; j++)
printf("Комната #%d рассчитана на %d мест\n",room[0][j],room[1][j]);
puts("Введите минимальное необходимое количество мест");
scanf("%d",&num);
// поиск списка комнат с заданной вместимостью
for(j=0; j<10; j++)
if(room[1][j]>=num)
{flag=1;
printf("Комната #%d рассчитана на %d мест\n",room[0][j],room[1][j]);
}
if(flag==0)
puts("Комнат с таким количеством мест нет");
}
Пример 2. По введенным числу, месяцу и году определить порядковый номер дня в году. Например, если ввести 10 - это число, 4 – это месяц, 2001 – это год, то программа должна вывести:
В 2001 году это день имеет номер 100.
Для решения этой задачи используется двумерный массив, имеющий две строки и 13 элементов в каждой строке. В первую строку занесены значения количества дней в каждом месяце не високосного года, а во вторую - то же для високосного года. В строке 13 элементов, а на 12, т.к. месяцы года нумеруются, начиная с первого, а индексы элементов массива начинаются с нуля.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main(void)
{
clrscr();
int year,month,day,i,k;
//объявление и инициализация массива
int tab_days[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
puts("Введите число, месяц и год");
scanf("%d %d %d",&day,&month,&year);
// определим, високосный ли год
k=year%4==0 && year%100!=0 || year%400 ==0;
if(k==1)
puts("Год високосный");
else
puts("Год не високосный");
// контроль правильности ввода месяца
if(month<1 || month >12)
{
puts("Неверно введен месяц");
exit(-1); //завершение работы программы при ошибке
}
// контроль правильности ввода числа
if(day <1 || day >tab_days[k][month])
{
puts("Неверно введен день");
exit(-1);
}
// цикл по номеру месяца
for(i=1; i<month; i++)
day+= tab_days[k][i];
printf("В %d году этот день имеет номер %d\n",year, day);
getch();
}
Дата добавления: 2015-07-11; просмотров: 89 | Нарушение авторских прав