на с++... надеюсь, не критично...
Можно так:
Только здесь и строчные буквы прокатывают. Если не хочешь, чтобы они выводились - убери условие || (tempArray > 96 && tempArray < 123) .Код:#include <iostream> int main(int argc, char *argv[]) { int i, j; std::string inputString; const char *tempArray; std::cin >> inputString; try { tempArray = new char[inputString.length()+1]; } catch (std::bad_alloc) { std::cout << "Could not allocate. Bye ..."; exit(-1); } tempArray = inputString.c_str(); for(i = 0; i < inputString.length(); i++) { if( (tempArray[i] > 64 && tempArray[i] < 91) || (tempArray[i] > 96 && tempArray[i] < 123) ) { if( (((int)tempArray[i+1]-48) >= 0) && (((int)tempArray[i+1]-48) < 10)) { for(j = 0; j < (tempArray[i+1] - 48); j++) std::cout << tempArray[i]; } else { std::cout << "\nIncorrect format of a line" << std::endl; break; } } } std::cout << std::endl; delete[] tempArray; std::cin.get(); return 0; }
а что значит это строка k=k*10+c-'0'; сначала мы присваеваем к=0 потом это строка а потом опять к=0самый короткий вариант
Код:#include <stdio.h> int main() { int k=0,c=0,a=0; while(c!='\n') { c=getchar(); if(c>='0' && c<='9') k=k*10+c-'0'; else { if(a) do { putchar(a); } while(--k>0); a=c; k=0; } } }
а что значит это строка k=k*10+c-'0'; сначала мы присваеваем к=0 потом это строка а потом опять к=0
обьясните пожалуйста)
Код:
#include <stdio.h>
int main()
{ int k=0,c=0,a=0; //Инициализация нулями
while(c!='\n') //Переберать пока не нажали ENTER
{ c=getchar(); //Получить ascii-код с клавы
if(c>='0' && c<='9') //Если получили число (смотри ASCII коды)
k=k*10+c-'0'; //Если двойное число, пример:A13B156 (для того и *10)
else //Если нет
{ if(a) do { //Выводить букву(старую) k раз
putchar(a);
} while(--k>0);
a=c; //Запомнить новую букву для послед. вывода
k=0; //Обнулить счётчик
}
}
}
Подскажите как убрать форму и спрятать прогу(с панели пуска)? C++Builder 6
Иногда происходит странная трансформация string в AnsiString(ошибка при компиляции, хотя я объявлял только string, как объявлять объект класса AnsiString не знаю), это баг билдера?using namespace std;
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <alloc.h>
#include <string>
#include <iostream>
using namespace std;
//a.h
extern char abc [64];
long makeTable(void);
//(без тел ф-ий)
//a.cpp
#include <string.h>
#include <conio.h>
#include <stdio.h>
long makeTable(void);
char abc [64];
//(описание ф-ий)
//unit1.cpp
#include "a.h"
//....
makeTable();
При чем здесь наследование вообще? модуль "наследует" класс?2agent
насколько мне известно Iostream не наследует класс string
std::string s = "12";
int t = atoi(s.c_str());
возможно дело в забытом вложении a.h в a.cpp?//a.h
extern char abc [64];
long makeTable(void);
//(без тел ф-ий)
//a.cpp
#include <string.h>
#include <conio.h>
#include <stdio.h>
long makeTable(void);
char abc [64];
//(описание ф-ий)
//unit1.cpp
#include "a.h"
//....
makeTable();
//a.h
[U]#include <string.h>
#include <conio.h>
#include <stdio.h>[/U]
extern char abc [64];
long makeTable(void);
//(без тел ф-ий)
//a.cpp
[B]#include "a.h"[/B]
long makeTable(void);
char abc [64];
//(описание ф-ий)
Код://a.h [U]#include <string.h> #include <conio.h> #include <stdio.h>[/U] extern char abc [64]; long makeTable(void); //(без тел ф-ий) //a.cpp [B]#include "a.h"[/B] long makeTable(void); char abc [64]; //(описание ф-ий)
//а.срр
#include <string.h>
#include <conio.h>
#include <stdio.h>
[COLOR="#ff0000"]extern char abc [64];[/COLOR]
long makeTable(void);
long makeTable(void);
[COLOR="Red"]char abc [64];[/COLOR]
, извините, что такое?Код:string abc(string); string f(string);
Вот это
, извините, что такое?
//a.h
[B]#ifndef A_H
#define A_H[/B]
[U]#include <string.h>
#include <conio.h>
#include <stdio.h>[/U]
extern char abc [64];
long makeTable(void);
//(без тел ф-ий)
[B]#endif[/B]
//a.cpp
[B]#include "a.h"[/B]
long makeTable(void);
char abc [64];
//(описание ф-ий)