Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Динамические строки и массивы строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ файлы http://www.cyberforum.ru/cpp-beginners/thread96968.html
помогите плз кто нить вот задание Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию.Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию....
C++ Строковая переменная Привет всем! Изучаю С++. Ну, проблему кодировки в консольном окне вреде бы решил (работаю в Vicual C++ 2008). Вот такая простенькая программка работает на русском языке: ПК спрашивает "как вас... http://www.cyberforum.ru/cpp-beginners/thread96950.html
перевести из Паскаля в Срр C++
Program lab_3; uses CRT; var x,i,min: integer; Begin clrscr; min:=$FFF; for i:=0 to 9 do begin readln(x);
C++ Работа с библиотекой math.h
Задача звучит так: найти f(x) при x=0.7 и остаток от деления f(x) на g(x). Среда Borland C++ 3.1 #include <stdio.h> #include <conio.h> #include <math.h> int main(void) { double x,y,g;...
C++ Определение кол-ва одинаковых цифр в записи целого числа http://www.cyberforum.ru/cpp-beginners/thread96899.html
написать программу которая определяет количество одинаковых цифр в записи целого числа(которое пользователь вводит) вообщем вопрос: как это сделать?
C++ Массивы строк с симболами Дан массив строк n: 1)программа выводит количество строк в которых всречается слово “zima”. 2) программа выводит общее количество быкв “t” во всех строчек. 3) программа выводит общее количество... подробнее

Показать сообщение отдельно
insideone
Модератор
Автор FAQ
3639 / 918 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
20.02.2010, 17:54
2 Sens0 В массиве объем заранее определен поэтому дозаполнить "!" очень легко.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char a[3][10]; // 3 строки по 10 символов
// тут как то заполнили эти строки
// а теперь дозаполним '!'
for (int i = 2; i > 0; i--)
{
   a[i][9] = '\0'; // завершаем строку
   for (int j = 8; j > 0; j--)
   {
      a[i][j] = '!';
      if ( a[i][j] == 0 ) // наткнулись на прошлый конец строки?
          break; // выходим. дальше же нормальная строка и не стоит её портить
   }
}
Если же массив динамический то не понятно... нужно как то перевыделять память для добавления этих "!"? Не пойму

Добавлено через 24 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>
 
using namespace std;
 
#define N 3
 
int main()
{
 
    char** strs = new char*[N]; // 3 строки
    int max_i = 0, max_len = 0, cur_len = -1;
    for (int i = 0; i < N; i++)
    {
        string temp;
        getline(cin, temp);
        cur_len = temp.length()+1;
        if ( cur_len > max_len ) { max_len = cur_len; max_i = i; }
        strs[i] = new char[cur_len];
        memcpy(strs[i], temp.c_str(), temp.length()+1);
    }
    for (int i = 0; i < N; i++)
    {
        if ( i == max_i ) continue; // с максимальной строкой ничего не делаем
        string temp = strs[i]; // копируем строку
        delete [] strs[i]; strs[i] = new char[max_len]; // перевыделяем память
        memset(strs[i], '!', max_len);
        strs[i][max_len-1] = '\0';
        memcpy(strs[i], temp.c_str(), temp.length());
    }
return 0;
}
Вот так решилось. Ввел
a
bb
ccc
На выходе
a!!
bb!
ccc
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru