Rajzoljunk a konzol ablakba Windowson
Rendezd át az 5. heti 4. példában szereplő tömb elemeit úgy, hogy a negatív értékű elemek a tömb elején, a pozitív értékűek a tömb végén legyenek! Ne használj segédtömböt! (Segédváltozót használni szabad.) Az átrendezés után az elemek sorrendje mindegy, nem kell abban a sorrendben lenniük, mint eredetileg.
Írj programot, amely a szabványos bemenetről olvasott szöveget úgy írja a szabványos kimenetre, hogy az összes kisbetűt nagybetűvé alakítja! Futtasd a programot konzolablakból úgy, hogy egy szöveges fájlt átirányítasz, és ez legyen a program bemenete, és úgy is,hogy az eredmény szöveges fájlba kerüljön!
Írj programot, a szabványos bemeneten érkezett szöveget úgy írja a szabványos kimenetre, hogy a benne érkező :) és :( szmájlikat "szuper" ill. "sajnos" szöveggel helyettesítve írja a szabványos kimenetre! A feladatot állapotgéppel valósítsd meg!
Írj programot, amely a szabványos bemeneten érkező szöveget a szövegbe rejtett vezérlőkaraktereknek megfelelően írja ki a szabványos kimenetre. Amíg nincs vezérlőkarakter, addig a beérkező szöveget változatlanul írja ki. Ha a beérkező szövegben '^' karakter érkezik, akkor onnantól kezdve a kisbetűk helyett azok nagybetű változatt írja ki, a többi karaktert pedig változatlanul írja ki.Ha a beérkező szövegben '!' karakter érkezik, akkor onnantól kezdve a nagybetűk helyett azok kisbetű változatt írja ki, a többi karaktert pedig változatlanul írja ki. Ha már érvényben van a nagybetűsítés és '!' érkezik, vagy érvényben van a kisbetűsítés és '^' érkezik, akkor utána a kisbetűket nagybetűvé, a nagybetűket kicsivé konvertálva írja ki, a többi karaktert változatlanul. Ha '=' érkezik bármikor, akkor az összes korábbi konverzió érvényét veszti, azaz minden karaktert úgy ír ki, ahogy beérkezik. A vezérlőkaraktereket sohasem írja ki a kimenetre.
Tervezd meg az állapotgépet állapotgráffal vagy állapottáblával, és valósítsd meg a megtervezett állapotgépet a programban!
| 1. feladat |
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define MERET 10
int main(){
double tomb[MERET];
int i,j;
srand(time(0)); // a véletlenszámgenerátor inicializálása, egy programban csak egyszwer fusson!
for (i = 0; i < MERET; i++)
tomb[i] = ((double)rand() / RAND_MAX) * 100.0 - 50.0;
i = 0;
j = MERET - 1;
while (i < j){
while (tomb[i] < 0 && i < j) // a tömb elején megkeressük az elso pozitív elemet
i++;
while (tomb[j] > 0 && i < j) // a tömb végén megkeressük az elso negatív elemet
j--;
if (i < j){ // Ha a pozitív elem elobb van, mint a negatív, akkor megcseréljük oket
double temp = tomb[i];
tomb[i] = tomb[j];
tomb[j] = temp;
}
i++;
j--;
}
for (i = 0; i < MERET; i++)
printf("%g\n", tomb[i]);
return 0;
}
|
| 2. feladat |
#include <stdio.h>
int main(){
int ch;
while( (ch = getchar()) != EOF ){
if( ch >= 'a' && ch <= 'z' )
putchar(ch - 'a' + 'A' );
else putchar(ch);
}
return 0;
}
/*
int main(){
char ch;
while( scanf("%c",&ch)==1 ){
if( ch >= 'a' && ch <= 'z' )
printf("%c",ch - 'a' + 'A' );
else printf("%c",ch);
}
return 0;
}
*/
|
| 3. feladat: alapmegoldás scanf-fel és switchekkel |
#include <stdio.h>
int main(){
typedef enum allapot{Alap, Kp} allapot;
char ch;
allapot all = Alap;
while(scanf("%c",&ch)==1){
switch(all){
case Alap:
switch(ch){
case ':':
all=Kp;
break;
case '(':
case ')':
default:
printf("%c", ch);
break;
}
break;
case Kp:
switch(ch){
case ':':
printf(":");
break;
case '(':
all = Alap;
printf("sajnos");
break;
case ')':
all = Alap;
printf("szuper");
break;
default:
all = Alap;
printf(":%c", ch);
break;
}
break;
}
}
return 0;
}
|
| 3. feladat: így is lehet (getchar-ral, putchar-ral, if-fel) => Ez a megoldás se nem jobb, se nem rosszabb, mint a másik. |
#include <stdio.h>
int main(){
enum { Alap, Kettospont} allapot = Alap;
int ch;
while( (ch = getchar()) != EOF ){
switch(allapot){
case Alap:
if(ch==':')allapot=Kettospont;
else putchar(ch);
break;
case Kettospont:
if(ch=='('){
printf("sajnos");
allapot = Alap;
}
else if(ch==')'){
printf("szuper");
allapot = Alap;
}
else if(ch==':')
putchar(':');
else{
printf(":%c",ch);
allapot = Alap;
}
break;
}
}
return 0;
}
|
| 4. feladat |
![]() |
#include <stdio.h>
#include <ctype.h>
int main() {
char ch;
typedef enum { alap, naggya, kicsive, kisnaggya } Allapot;
Allapot all = alap;
while (scanf("%c", &ch) == 1) {
switch (all) {
case alap:
if (ch == '^')
all = naggya;
else if (ch == '!')
all = kicsive;
else if (ch != '=')
printf("%c", ch);
break;
case naggya:
switch (ch) {
case '=':
all = alap;
break;
case '^':
break;
case '!':
all = kisnaggya;
break;
default:
printf("%c", toupper(ch));
break;
}
break;
case kicsive:
switch (ch) {
case '=':
all = alap;
break;
case '^':
all = kisnaggya;
break;
case '!':
break;
default:
printf("%c", tolower(ch));
break;
}
break;
case kisnaggya:
switch (ch) {
case '=':
all = alap;
break;
case '^':
case '!':
break;
default:
if (isupper(ch))
printf("%c", tolower(ch));
else
printf("%c", toupper(ch));
break;
}
break;
}
}
return 0;
} |