Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Problema de programare cu fisiere.
Last Updated: May 23 2018 10:57, Started by
gidea98
, May 22 2018 21:18
·
0
#1
Posted 22 May 2018 - 21:18
Vreun programator sau cunoscator in ale programarii. Am si eu o problemuta. Acest program momentan sorteaza intr-un fisier crescator in functie de cantitate,produsele, insa denumirea lor nu reusesc din cauza declararii lui k.As fi profund recunoscator daca m-ati putea ajuta
#include <stdio.h> #include <string.h> #define DIM 100 typedef struct { int cantitate; float pret; char denumireprodus[100]; }gestiune; //gestiune loss[DIM]; int n; void cit_sir (char* sir) { do { gets (sir); } while (strlen (sir)==0); } int main (void) { FILE *f, *h; int i=0,temp,j,aux1; gestiune g[DIM]; char* k; printf ("Cate produse doriti sa inregistrati? \n"); scanf ("%d", &n); for (i=0;i<n;i++) { printf ("Numele produsului %d:",i+1); fflush(stdin); gets (g[i].denumireprodus); fflush(stdin); printf ("Pretul %d:",i+1); scanf ("%f", &g[i].pret); printf ("Cantitatea %d:",i+1); scanf ("%d", &g[i].cantitate); } f=fopen ("produsetest.txt", "w+"); h=fopen ("produsesortate.txt", "w+"); if (f==NULL) printf ("Fisierul nu se poate crea!"); else { n=i; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(g[j].cantitate<g[i].cantitate) { temp=g[i].cantitate; aux1=g[i].pret; k=g[i].denumireprodus; g[i].cantitate=g[j].cantitate; g[i].pret=g[j].pret; g[i].denumireprodus=g[j].denumireprodus; g[j].cantitate=temp; g[j].pret=aux1; g[j].denumireprodus=k; } for(i=0;i<n;i++) //fwrite (&g[0], sizeof(gestiune), 1, f); fprintf(h,"%s %f %d \n",g[i].denumireprodus,g[i].pret,g[i].cantitate); fclose (f); remove("produsetest.txt"); fclose(h); rename("produsetest.txt", "produsesortate.txt"); } return 0; } |
#2
Posted 23 May 2018 - 05:57
gidea98, on 22 mai 2018 - 21:18, said: typedef struct { … char denumireprodus[100]; } … … char* k; … k=g[i].denumireprodus; … g[i].denumireprodus=g[j].denumireprodus; … g[j].denumireprodus=k;
|
#3
Posted 23 May 2018 - 10:57
Redefineste k de forma:
char k[100]; Apoi folosesti functia strcpy ca sa copiezi continutul intr-o parte in alta: for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(g[j].cantitate<g[i].cantitate) { temp=g[i].cantitate; aux1=g[i].pret; strcpy(k, g[i].denumireprodus); g[i].cantitate=g[j].cantitate; g[i].pret=g[j].pret; strcpy(g[i].denumireprodus, g[j].denumireprodus); g[j].cantitate=temp; g[j].pret=aux1; strcpy(g[j].denumireprodus, k); } Asta daca vrei sa ramii la C, in C++ poti folosi std:string; In cazul tau mai bine schimbi intre ele elementele vectorului: gestiune swap; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(g[j].cantitate<g[i].cantitate) { swap = g[i]; g[i]=g[j]; g[j] = swap; } De asemenea ar trebui sa incepi sa te obisnuiesti sa dai nume relevante si in engleza variabilor, f, h, k, aux1 nu spun nimic |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users