Új hozzászólás Aktív témák
-
Dead_slow
tag
válasz [HUN]Zolee #149 üzenetére
HE-HE.
Én is ugyanazt a feladatot kaptam beadandónak, nagyon sokat segítettél -
Dead_slow
tag
válasz [HUN]Zolee #155 üzenetére
Ok, úgy lesz. Örülök hogy segíthettél
-
Dead_slow
tag
Üdv!
Elég kezdő vagyok programozás témában, az alábbi feladat megoldásában kellene segítség, csak egy feltétel kell bele, de már fáradt vagyok és nagyon tompa, valszeg rettenet triviális a megoldás, ezért ne röhögjetek ki
Szóval a feladat: Egy sakktbálára bábokat helyezünk el. Programunk kirajzolja a táblát, majd bekér egy lépésszámot. Ezután minden bábot a lépésszámnak megfelelő számú mezővel előre léptet(nagyobb sorszámú sorok felé), majd újra kirajzolja a táblát. A tábláról lelépő figurák természetesen nem kell kirajzoli.
Nekem ezzel van gondom, ha túl nagy lépésszámot adok meg akkor átlép egy következő oszlopba.
Eddig jutottam
#include<stdio.h>
#include<stdlib.h>
char tabla[10][10];
int sor,oszlop,lep;
char imp[3];
void init(){
for(sor=0;sor<9;sor++){
for(oszlop=0;oszlop<9;oszlop++)
tabla[sor][oszlop]=' ';
}
}
void lerak(){
char babu;
do{
printf("Kerem a babut es a poziciojat pl.:(Ha1): ");
scanf("%s",imp);
babu=imp[0];
oszlop=imp[1]-'a';
sor=imp[2]-1-'0';
if(imp[0]!='*')
tabla[oszlop][sor]=babu;
}while(imp[0]!='*');
}
void rajzol(){
int i,j;
printf("\n ");
for(i=0;i<8;i++)
printf("%c ", 'A'+i);
printf("\n");
for(i=0;i<8;i++){
printf("%d ", i+1);
for(j=0;j<8;j++)
printf("|%c", tabla[j][i]);
printf("|\n");
}
}
void leptet(){
int i,j,k;
k=0;
printf("lepeszsam:");
scanf("%d",&k);
printf("\n ");
for(i=0;i<8;i++)
printf("%c ", 'A'+i);
printf("\n");
for(i=0;i<8;i++){
printf("%d ", i+1);
for(j=0;j<8;j++)
printf("|%c", tabla[j][i-k]);
printf("|\n");
}
}
int main(){
init();
lerak();
rajzol();
leptet();
system("PAUSE");
return 0;
}[ Szerkesztve ]
-
Dead_slow
tag
válasz Gyuri16 #1610 üzenetére
Köszönöm, a fáradtság úgy néz ki legyőzött. Így már minden szép és jó.
void leptet(){
int i,j,k;
k=0;
printf("lepeszsam:");
scanf("%d",&k);
printf("\n ");
for(i=0;i<8;i++)
printf("%c ", 'A'+i);
printf("\n");
for(i=0;i<8;i++){
printf("%d ", i+1);
for(j=0;j<8;j++){
if(k>i)
printf("|%c",tabla[' '][' ']);
else
printf("|%c",tabla[j][i-k]);
}
printf("|\n");
}
} -
Dead_slow
tag
válasz Gyuri16 #1614 üzenetére
Köszönöm, a kiegészítést/magyarázatot!
Már az előző hozzászólás után módosítottam a kódot, nem rég kezdtem el foglalkozni a dologgal, mármint nem a C nyelvvel, hanem az egész programozás témával remélem azért később jobban fog menni és nem okoz majd ekkora nehézséget egy ilyen egyszerűbb program megírása. -
Dead_slow
tag
Üdv!
Újabb problémám lenne, ezúttal a feladat a következő:
Egy NxN-es méretű négyzetrácsos táblára bábokat helyezünk el, egy mezőre maximum egyet. A program bekéri a tábla méretét, majd egyenként a bábok pozicioját (pl.3). Az utolsó báb után egy x karaktert ütünk.
A program ezután kijelzi a táblát, valamint minden sorhoz és oszlophoz kijelzi az ott található bábok számát (a nullát nem kell kiírni).#include<stdio.h>
int i,j,sorszum,oszlopszum,meret;
char tabla[40][40];
char imp[2];
void init(){
for(i=0;i<meret;i++){
for(j=0;j<meret;j++){
tabla[i][j]=' ';
}
}
}
void beker(){
do{
printf("Kerem a tabla meretet: ");
scanf("%d",&meret);
printf("Kerem a babu poziciojat:");
scanf("%s",imp);
if(imp[0]!='x')tabla[imp[1]-'1'][imp[0]-'A']='x';
}while(imp[0]!='x');
}
void rajzol(){
printf("\n ");
for(i=0;i<meret;i++)
printf("%c ", 'A'+i);
printf("\n");
for(i=0;i<meret;i++){
printf("%2d", i+1);
for(j=0;j<meret;j++){
if(tabla[i][j]==' ')
printf("| ");
else{
sorszum++;
printf("|%c",tabla[i][j]);
}
}
printf("|");
if(sorszum>0) printf(" %d",sorszum);
sorszum=0;
printf("\n");
}
printf("\n ");
for(j=0;j<meret;j++){
oszlopszum=0;
for(i=0;i<meret;i++){
if(tabla[i][j]=='x'){
oszlopszum++;
}
}
if(oszlopszum>0) printf("%d ", oszlopszum);
else printf(" ");
}
printf("\n");
}
int main(){
init();
beker();
rajzol();
system("PAUSE");
return 0;
}Akármit csinálok az sorok végén mindig a bekért tábla méret jelenik meg az x-ek száma helyett. Mi lehet a gond?
-
Dead_slow
tag
Üdv!
Újabb problémával jelentkezem, feladat következő:
Írjon cenzúrázó programot. A program beolvas egy mondatot, majd egy tiltott karaktersorozatot. A mondatban kicseréli a karaktersorozat minden előfordulását 3 csillag karakterre(cenzúrázott szó helyett 3 csillagot rajzol). Végül kiírja a cenzúrázott mondatot.A feladat megoldása során csak gets, scanf, és a printf függvények használhatók. NEM szabad előre megírt stringkezelő függvényeket használni.
Szokás szerint elkezdtem megírni , de ezt a részt hogy a beolvasott tiltott szó helyére 3 csillagot tegyen nem tudom megcsinálni, megírtam úgy hogy minden karakterét a szónak csillagra cseréli, de ez ugye így nem jó.
#include <stdio.h>
int main(){
int i,j,szohossz,mondathossz;
char szo[20],mondat[100];
printf("mondat:");
gets(mondat);
printf("szo:");
scanf("%s", szo);
i=0;
while(szo[i]!=0){
i++;
}
szohossz=i;
i=0;
while(mondat[i]!=0){
i++;
}
mondathossz=i;
for(i=0;i<=mondathossz-szohossz;i++){
for(j=0;j<szohossz;j++){
if(szo[j]!=mondat[i+j])
break;
}
if(j==szohossz){
for(j=0;j<szohossz;j++){
mondat[i+j]='*';
}
i=i+szohossz-1;
}
}
printf("%s\n", mondat);
system("PAUSE");
return 0;
}Köszönöm
-
Dead_slow
tag
Üdv!
Ismét kérdéssel fordulnék a topik olvasóihoz, a feladat a következő lenne:
Egy egyszerű teleknyilvántartó programot készítünk téglalap alakú telkek kezelésére. A program bekéri a telkek számát, majd bekéri és eltárolja a telkek helyrajzi számát, a tulaj nevét, telek hosszát és szélességét. Ezután a program kiírja azon telek vagy telkek adatait, amelyeknél a legnagyobb a hossz és a szélesség különbsége.
Eddig jutottam, meghatározza a legnagyobb szélesség-hosszúságú és hosszúság-szélességű tel(ke)ket, csak nem tudom, hogy tudnám rávenni, hogy ahhoz/azokhoz az érték(ek)hez tartozozó mezőket írja ki.
#include<stdio.h>
#include<stdlib.h>
struct telek{
char nev[41];
char hely[41];
int hossz, szeles, kulonb;
};
struct telektar{
int db;
struct telek *telkek;
};
void lefoglal(struct telektar *ft){
printf("Kerem a telkek szamat:");
scanf("%d",&(*ft).db);
(*ft).telkek=(struct telek*)malloc(sizeof(struct telek)*(*ft).db);
}
void beker_telek(struct telek *t){
printf("Tulaj neve: \n");
scanf("%s",(*t).nev);
printf("Helyrajziszam: \n");
scanf("%s",(*t).hely);
printf("Hosszusag: \n");
scanf("%d",&(*t).hossz);
printf("Szelesseg: \n");
scanf("%d",&(*t).szeles);
}
void beker_telektar(struct telektar *tt){
int i;
for(i=0;i<(*tt).db;i++){
beker_telek(&(*tt).telkek[i]);
}
}
void listaz(struct telektar *lt){
int i,j,max;
for(i=0;i<(*lt).db;i++){
if((*lt).telkek[i].kulonb=(*lt).telkek[i].hossz-(*lt).telkek[i].szeles>0){
(*lt).telkek[i].kulonb=(*lt).telkek[i].hossz-(*lt).telkek[i].szeles;
printf("kulonbseg: %d\n",(*lt).telkek[i].kulonb);
}
else{
(*lt).telkek[i].kulonb=(*lt).telkek[i].szeles-(*lt).telkek[i].hossz;
printf("kulonbseg: %d\n",(*lt).telkek[i].kulonb);
}
}
max=0;
for(j=0;j<(*lt).db;j++){
if(max<(*lt).telkek[j].kulonb){
max=(*lt).telkek[j].kulonb;
}
}
printf("legtorzabb telek: %d",max);
}
void felszabadit(struct telektar *ft){
free((*ft).telkek);
(*ft).telkek=NULL;
}
int main(){
struct telektar b;
lefoglal (&b);
beker_telektar (&b);
listaz (&b);
felszabadit (&b);
return 0;
}[ Szerkesztve ]
-
Dead_slow
tag
válasz Jester01 #1627 üzenetére
Köszönöm, ezzel a kiegészítéssel a listaz függvény végére már tökéletesen működik:
int k;
for(k=0;k<(*lt).db;k++){
if(max==(*lt).telkek[k].kulonb){
printf("legtorzabb tel(k)ek:\nHelyrajziszam:%s\nTulajdononsa:%s\n Szelessege:%d\n Hosszusaga:%d\n ",(*lt).telkek[k].hely,(*lt).telkek[k].nev,(*lt).telkek[k].hossz,(*lt).telkek[k].szeles);
} -
Dead_slow
tag
Üdv urak nekem is kellen egy kis segítség.
Adott egy feladat amiben az adatok bekérését olyen formán kell megadni, hogy: "Lili, 7, Szabó Gergő"
A kérdés az, hogy hogy tudnám ezt úgy beolvastatni hogy a "Lili" a "7" és a "Szabó Gergő" is egy-egy külön stringben legyen eltárolva.
Köszönöm[ Szerkesztve ]
-
Dead_slow
tag
Üdv!
Újra segítséget kérek a topik "lakóitól" itt a feladat: Egy elefánt menhelyre nyilvántartó programot készítünk. A program először bekéri a menhelyen megfordult elefántok számát, majd ezután bekéri és eltárolja az elefántok nevét, a menhelyre érkezés évét, valamint a menhelyről távozás évét(lásd a példát).
Eztán a program kilistázza évenkénti bontásban az adott évben a menhelyen tartózkodott elefántok nevét. A listázás a legkorábban érkezett elefánt érkezési évétől a legkésőbb távozott elefánt távozási évéig tart.Pl.:
Elefántok száma: 4
1. Neve: Trombi
Erkezes: 1998
Tavozas: 2001
2. Neve: Frédi
Erkezes: 1999
Tavozas: 2000
3. Neve: Olga
Erkezes: 1998
Tavozas: 1999
4. Neve: Helga
Erkezes: 2004
Tavozas: 2005Kimenet:
1998: Trombi, Olga
1999: Trombi, Frédi, Olga
2000: Trombi, Frédi
2001: Trombi
2002:
2003:
2004: Helga
2005: HelgaJelenleg itt tartok, persze nem biztos hogy így jó lesz:
#include<stdio.h>
struct elefant{
char nev[41];
int erkezes;
int tavozas;
};
struct elefanttar{
int db;
struct elefant *elefantok;
};
void lefoglal(struct elefanttar *pfe){
printf("kerem az elefantok szamat: ");
scanf("%d",&(*pfe).db);
(*pfe).elefantok=(struct elefant*)malloc(sizeof(struct elefant)*(*pfe).db);
}
void beker_elefant(struct elefant *pe){
printf("Neve: ");
scanf("%s",(*pe).nev);
printf("Erkezes: ");
scanf("%d",&(*pe).erkezes);
printf("Tavozas: ");
scanf("%d",&(*pe).tavozas);
}
void beker_elefanttar(struct elefanttar *pet){
int i;
for(i=0;i<(*pet).db;i++){
beker_elefant(&(*pet).elefantok[i]);
}
}
void listaz(struct elefanttar *let){
char c[41];
int sorba[200];
int max=0;
int min=10000;
int i,j,k;
for(i=0;i<(*let).db;i++){
if(max<(*let).elefantok[i].erkezes){
max=(*let).elefantok[i].erkezes;
}
}
for(j=0;j<(*let).db;j++){
if(min>(*let).elefantok[j].erkezes){
min=(*let).elefantok[j].erkezes;
}
}
}
void felszabadit(struct elefanttar *pfe){
free((*pfe).elefantok);
(*pfe).elefantok=NULL;
}
int main(){
struct elefanttar b;
lefoglal(&b);
beker_elefanttar(&b);
listaz(&b);
felszabadit(&b);
return 0;
}[ Szerkesztve ]
-
Dead_slow
tag
válasz Gyuri16 #1713 üzenetére
Köszönöm, összehoztam bár nem láncolt listával.
Nemrég kérdeztem itt, hogy lehetne beolvasni egy ilyen formátumú(pamacs, 7, Vnev Knev) stringet úgy hogy mind a három adatot külön tárolja el, akkor írtál egy scanf-es megoldást, de azt nem fogadták el, mondván, hogy a név állhat simán 3 részből is, csináljam gets-el ezt mondták. Gondoltam feldarabolom, de valamiért nem akar működni, tudom alap dolog, de mégsem jó, az elsőt még kiírja, de a másodikat illetve a harmadikat már nem. Itt a main fv-m.
int main(){
printf("adatok: ");
gets(mondat);
i=0;
do{
elso[i]=mondat[i];
i++;
}while(mondat[i]!=',');
i=i+2;
do{
masodik[i]=mondat[i];
i++;
}while(mondat[i]!=',');
i=i+2;
do{
harmadik[i]=mondat[i];
i++;
}while(mondat[i]!='\0')
printf("%s\n",elso);
printf("%s\n",masodik);
printf("%s\n",harmadik);
system("pause");
return 0;
}[ Szerkesztve ]
-
Dead_slow
tag
válasz Gyuri16 #1717 üzenetére
Köszönöm, így már értem
#include<stdio.h>
char mondat[100];
char elso[100];
char masodik[100];
char harmadik[100];
int i,j,k,l;
int main(){
printf("adatok: ");
gets(mondat);
i=0;
do{
elso[i]=mondat[i];
i++;
}while(mondat[i]!=',');
elso[i+1]=='\0';
i=i+2;
j=0;
do{
masodik[j]=mondat[i];
i++;
j++;
}while(mondat[i]!=',');
i=i+2;
j=0;
do{
harmadik[j]=mondat[i];
i++;
j++;
}while(mondat[i]!='\0');
printf("%s\n",elso);
printf("%s\n",masodik);
printf("%s\n",harmadik);
system("pause");
return 0;
} -
Dead_slow
tag
válasz Gyuri16 #1719 üzenetére
Annyira nem szigorúak, csak ha, meg van adva egy feladat, akkor pontosan olyannak kell lennie a kimenetnek mint, ami a példában szerepel, valamint néha kikötnek ezt-azt, hogy azt ne használjuk. A lezáró '\0' jogos, de az én kódomban a gépen szerepel, úgy, hogy vagy töröltem innen lányos zavaromban, vagy csak egy korábbi állapotot másoltam be
Amúgy köszömöm, fgets-et tanulmányozom akkor picit.[ Szerkesztve ]
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Telekom mobilszolgáltatások
- Energiaital topic
- Autós kamerák
- Luck Dragon: Asszociációs játék. :)
- Mibe tegyem a megtakarításaimat?
- Renault, Dacia topik
- sziku69: Szólánc.
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Termékoldal buktatta le a Huawei Watch Fit 3-at
- Háztartási gépek
- További aktív témák...