Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Spanzuratoarea : Ianuarie 08, 2014, 14:47:52
Multumesc de raspuns stiu ca o sa am probleme daca introduc mai multe caractere dar eu vroiam sa introduc doar unul a si cum mi-ai zis tu nu a mers...dar daca am pus scanf("\n%c",&litera a mers),oricum daca nu era pentru raspunsul tau nu imi dadeam seama
2  infoarena - concursuri, probleme, evaluator, articole / Teme / Spanzuratoarea : Ianuarie 08, 2014, 01:40:31
Am de facut o problema care simuleaza jocul de spanzuratoarea
cerinta suna cam asa

Input: un fisier care sa contina x cuvinte, x nu va fi in fisier si numarul maxim de incercari pe care il acceptati pana la terminarea jocului.

Alegeti random un cuvant, de la tastatura introduceti cate un caracter, daca acel caracter nu se afla in cuvant se va afisa un mesaj corespunzator, in caz contrar cuvantul obtinut dupa completarea caracterului.


problema functioneaza aproximativ...adica daca introduc o litera de la tastatura o sa imi arate ceva de genul

Tasteaza litera care crezi ca se afla in cuvant: a

m o _ _ o
Tasteaza litera care crezi ca se afla in cuvant:
Litera aceasta nu se afla in cuvant
m o _ _ o
Tasteaza litera care crezi ca se afla in cuvant:

Cand spune a doua oara "Tasteaza litera care crezi ca se afla in cuvant:" pur si simplu programul sare de parca am introdus un enter sau altceva,dar a treia oara "Tasteaza litera care crezi ca se afla in cuvant:" merge si se tot repeta pana se termina numarul de greseli sau pana gasesc cuvantul....O sa postez codul

Cod:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

FILE *f;

int main()
{
     char s[25],copie[25],litera;
     int x,nr=0,i,aux=0,ok,gasit_odata,nrgreseli;
     f=fopen("fisier.txt","r");

     //testam fisierul daca e vid

     if(f!=NULL)
            printf("Fisier deschis cu succes");
     else printf("Fisierul nu s-a deschis cu succes");

     //Gasim numarul de gresi permise

     while(fgets(s,25,f)!=NULL)
            nr++;
     int y=atoi(s);
     nrgreseli=y;
     printf("\n Numarul greseli maxime este %d",nrgreseli);
     fclose(f);

     //generam random un x care va fi cuvantul de ghicit

     x=rand()%(nr-1);

     //gasim cuvantul x in fisier
     f=fopen("fisier.txt","r");
     aux=1;
     while(fgets(s,25,f)!=NULL)
     {
         if(aux==x)
            break;
         else
            aux++;
     }

     //Creem copia cuvantului pentru apartii

     for(i=0;i<strlen(s)-1;i++)
        copie[i]=s[i];

     //Printez pe ecran cuvantul in faza originala

     aux=0;
     printf("\n");
     for(i=0;i<strlen(s)-1;i++)
     {
          if(i==0)
          {
              printf(" %c",s[i]);
              copie[i]='0';
              aux++;
          }
          else
            if(i==strlen(s)-2)
            {
                printf(" %c",s[strlen(s)-2]);
                copie[i]='0';
                aux++;
            }
          else
            if(s[i]==s[0] || s[i]==s[strlen(s)-2])
            {
                printf(" %c",s[i]);
                copie[i]='0';
                aux++;
            }
          else
            printf(" _ ");
     }

     // Programul de introducere a literelor

     while(aux<=strlen(s)-2 && nrgreseli>0)
     {
         printf("\n Tasteaza litera care crezi ca se afla in cuvant: ");
         scanf("%c",&litera);
         ok=0;
         gasit_odata=0;
         for(i=0;i<strlen(s)-1;i++)
         {
             if(aux<=strlen(s)-2 && nrgreseli>0 && litera==s[i] && copie[i]!='0')
             {
                    copie[i]='0';
                    aux++;
                    ok=1;
             }
             if(aux<=strlen(s)-2 && nrgreseli>0 && litera==s[i] && copie[i]=='0')
                    gasit_odata=1;
         }
         if(ok==1)
            printf("\n Felicitari ai gasit o litera ce apartine cuvantului");
         else
         {
            printf("\n Litera aceasta nu se afla in cuvant ");
            nrgreseli--;
         }
         if(gasit_odata==1)
                printf("\n Litera aceasta ai mai introduso odata sau se afla deja in cuvant");

         printf("\n");
         for(i=0;i<strlen(s)-1;i++)
            if(copie[i]=='0')
                printf(" %c",s[i]);
            else
                printf(" _ ");
     }
     if(nrgreseli>0)
        printf("\n Felicitari ai gasit cuvantul");
     else
            printf("\n Imi pare rau dar ai prea multe incercari");

     return 0;
3  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Verificare existenta nr in sir. : Decembrie 09, 2013, 15:00:17
Am inteles acum pai trebuia sa explici mai bine cerinta
4  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Scriere in fisier : Decembrie 09, 2013, 11:24:56
Pai nu se poate sa sa si citesti si sa si scrii in acelasi fisier ci in fisiere diferite.Asa ca incearca sa creezi alt fisier in care sa depozitezi suma ceruta si asa o sa mearga.
5  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Verificare existenta nr in sir. : Decembrie 09, 2013, 11:20:10
In pseudocod l-ai gresit pentru ca in memoria calculatorului o variabila nu poate lua la un moment dat decat o singura valoare,de aceea programul tau nu merge pentru ca A,B se schimba de fiecare data iar la final o sa ramana in memorie ultimile doua valori de aceea se foloseste un vector.
6  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Verificare existenta nr in sir. : Decembrie 09, 2013, 11:15:35
Salut nu ai dat toata cerinta pentru ca nu inteleg complet dar sper sa sune asa:Se da un sir de numere de la tastatura si sa se afiseze daca 2 numere x,y date si ele de la tastatura apar in sir.Pai daca cerinta este asa atunci trebuie sa creezi un vector in care sa pui elementele tale din sir si dupa sa faci o parcurgere.O sa iti dau si codul de la ce am zis eu.
#include<iostream.h>
int main()
{
int v[100],i,x,y,n,okx=0,oky=1;
cout<<"\n Dati numarul de elemente din sir";
cin>>n;
for(i=0;i<n;i++)      //Citim elementele din sir si le punem in vector
     cin>>v;
for(i=0;i<n;i++)
{
    if(v==x) okx=1;    //Daca gasim in sir ca macar o data exista x atunci okx=1(adica exista x in sir)
    if(v==y) oky=1;   //La fel ca la x dar pentru y.
}
if(okx==1 && oky==1) cout<<"\Da";
  else cout<<"\n Nu";
7  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Robotel : Decembrie 05, 2013, 02:02:05
Multumesc am invatat acum cum sa caut si sa gasesc drumul cel mai scurt daca e doar un punct de final si mai este si cunoscut...dar tot nu ma prind cum trebuie sa fac ca sa rezolv problema mea
8  infoarena - concursuri, probleme, evaluator, articole / Informatica / Robotel : Decembrie 05, 2013, 00:36:29
Vreau si eu un model de rezolvare pentru aceasta problema.

Fie un labirint (retea dreptunghiulara) cu celule ocupate (X) si libere (*). Fie R un robot in acest labirint.
Robotul se poate deplasa in 4 directii: N, S, E, V.
* * X * *
X * * * X
X * R * *
X * X X *
* * * * *
a). Testati daca R poate iesi din labirint (poate ajunge la margine).
b). Determinati un drum pentru iesire (daca exista).
c). Determinati un drum de lungime minima pentru iesire (daca exista).

Eu stiu sa verific doar daca robotul este deja pe margini sau daca poate ajunge direct mergand doar pe o directie

Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines