Архив метки: вывод

Первые шаги в Smarty

Smaty ШаблонизаторВывод данных используя шаблонизатор Smarty.

В файле index.php прописываем необходимые данные которые необходимо вывести в шаблоне.

 

Листинг примера файла index.php

include('Smarty.class.php');

// создаем объект шаблонизатора
$smarty = new Smarty;

// Здесь идет код php в котором получаем
// данные, контент необходимый для вывода
// Назначаем переменные и их значения
$smarty->assign('cars', 'Лада ');
$smarty->assign('colors', 'Белая');

// вызываем шаблон, который необходимо показать
$smarty->display('index.tpl');

Редактируем шаблон index.tpl

<html>
<head>
<title>Наш сайт о машине</title>
</head>
<body>
Информация о машине:
Марка: {$cars}
Цвет: {$colors}
</body>
</html>

Должно получиться в итоге на нашем сайте

Информация о машине:
Марка: Лада
Цвет: Белая

Коротко

1. файл index.php — получаем данные, создаем шаблонные переменные
2. файлы template *.tpl — помещаем переменные в нужное место шаблона

Си — работа со строками

Си работа со строками

Объявление строк

Строка в языке Си представляет собой одномерный массив символов, последним элементом которой является символ конца строки – нуль (строка, завершающаяся нулем, то есть NULL terminated string).

Объявление переменной типа строка в языке Си возможно тремя способами, два из которых инициализируют строку во время объявления.

Первый способ:

Объявления массива символов (не забудьте добавить место для завершающего нуля):

char s[40+1];

Второй способ:

Присвоить строковой переменной начальное значение (при этом длину строки компилятор может вычислить сам):

char s[] = "Пример инициализации строки";

Справа от знака присваивания записана строковая константа. В конце строки автоматически добавляется ноль (‘\0’). Константы символьных строк помещаются в класс статической памяти.

Третий способ:

Неявное указание, что используется массив. В левой части от знака присваивания указывается указатель на символ:

char *s="Второй вариант инициализации";

Переменная s будет указателем на то место в оперативной памяти, где располагается строковая константа. В такой форме записи кроется потенциальная ошибка, заключающаяся в том, что указатель на  символ часто называют строкой. Представленная ниже запись – это только указатель на символ, так как для размещения строки место не предусмотрено:

char *s;

Ввод строки со стандартного устройства ввода (клавиатуры)

Для работы со строками есть набор функций. Для ввода со стандартного устройства ввода (клавиатуры) чаще всего используются библиотечные функциями из модуля стандартного ввода-вывода: scanf и gets.

Для ввода строки с помощью функции scanf, использует формат «%s», причем обратите внимание на то, что перед идентификатором строки не используется знак адреса «&», так как одномерный массив уже представлен указателем на его начало:

scanf("%s", s);

Функция gets() считывает символы до тех пор, пока не достигнет символа перехода на новую строку. Функция принимает все символы вплоть до символа перевода строки, но не включает его. К концу строки добавляется завершающий ноль (‘\0’). Функция gets() помещает считанную с клавиатуры последовательность символов в параметр типа строка и возвращает указатель на эту строку (если операция завершилась успешно), или NULL (в случае ошибки). В приведенном ниже примере при успешном завершении операции, на экран будет выведено две одинаковые строки:

#include <stdio.h>
int main()
{  char s[50];
char *p;
p=gets(s);
printf(" \n Введена строка %s. ",s);
if (p) printf(" \n Введена строка %s. ",p);
return 0;
}

Попутно заметим, что функция gets часто используется для ввода лю-бых данных с клавиатуры в виде строки с целью дальнейшего преобразования функцией sscanf к нужному формату или для предварительного анализа вводимых данных, например:

#include <string.h>
#include <stdio.h>
#include <conio.h>
int main()
{ char s[50];   int x, err;
do
   {   printf(" \n Введите целое число -> ");
       gets(s);
       err=sscanf(s, "%d",&x);
       if (err!=1) printf(" \n Ошибка ввода. ");
  } while (err!=1);
  printf("\n Введено целое число -> %d", x);
return 0;
}

Вывод строк на стандартное устройство вывода (экран монитора)

Для вывода строк на стандартное устройство вывода (экран монитора) можно использовать две функции printf и puts. В функции printf в качестве формата передается «%s». Удобство использования этой функции заключается в том, что помимо строки можно сразу выводит данные других типов. Особенность функции puts заключается в том, что после вывода строки автоматически происходит переход на следующую строку.

Функции для работы со строками

Для преобразования строк в языке Си предусмотрена библиотека string. Каждая из функций имеет свой формат записи (прототип).

Наиболее  используемые функции рассмотрены в этой статье. — читать

Пример программ(листинг) работающей со строками

Пример №1(листинг) | Пример№2 (Листинг)

Пример задачи для условных операторов в С++

С++Общее задание:

Используя операторы ветвления (if и if … else), составить программу для вычисления составной (сложной) функции, имеющей различный вид на разных участках аргумента. С помощью переключателя (switch) указать на каком отрезке находится введенное с клавиатуры значение аргумента, и вывести значение функции в данной точке.
Все исходные данные, необходимые для проведения вычислений, вводить
с клавиатуры.
Функция и отрезки:

y=pow(x,2);           -2.0<=x<1.0
y=sqrt(x);             1.0<=x<2.0
y=sqrt(x-2)+sqrt(2);   2.0<=x<3.0
y=1+sqrt(x-1);         3.0<=x<=4.0

Пример решения задачи (листинг)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
void main()
{
/* номер отрезка, def – выбор по умолчанию */
 enum {def,o1,o2,o3,o4} otr;
 float x,y; 

  clrscr();
  printf("Тема: Ветвление программы \n");
  printf(" Задание: Используя оператор if, составить программу \n");
  printf("для вычисления составной функции вида: \n");
  printf("1> sqr(x)              при x от -2.0 до 1.0\n");
  printf("2> sqrt(x)             при x от  1.0 до 2.0\n");
  printf("3> y=sqrt(x-2)+sqrt(2) при x от  2.0 до 3.0\n");
  printf("4> y=1+sqrt(x-1)       при x от  3.0 до 4.0\n");
  printf("указать отрезок, где находится введенный с клавиатуры \n");
  printf("аргумент и вывести значение функции в данной точке. \n"); 

  printf("Введите x=");
  scanf("%f",&x);   printf("\n"); 

  /* Выбор отрезка */
   otr=def;
  if ((x>=-2.0) && (x<1.0))         otr=o1;
    else if ((x>=1.0) && (x<2.0))   otr=o2;
  if ((x>=2.0) && (x<3.0))          otr=o3;
  if ((x>=3.0) && (x<=4.0))         otr=o4; 

  /* Вычисление значения функции */
  switch (otr)
  {
    case o1: y=pow(x,2);           break;
    case o2: y=sqrt(x);            break;
    case o3: y=sqrt(x-2)+sqrt(2);  break;
    case o4: y=1+sqrt(x-1);        break;
    default:  printf("Число вне диапазона."); getch(); exit(1);
  }
  printf ("Промежуток %d: y= %3.2f; ",otr,y);
  getch();
}