Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Avocatul Poporului vs European Om...

Recomandari firme pentru draperii...

Receptie Eutelsat 5 West. Este po...

Poti receptiona semnal de la mai ...
 Cabluri HDMI 2.1 de 4m-5m care sa...

Zoom comparat cu Google Meet

Monitor/Display wireless?

Pornire greoaie dupa cateva zile ...
 De la un proiect scris in python ...

Audi A4 B9 quattro 190 CP!

Tepari la pariuri pe TikTok

Banca imi cere justificativ fondu...
 schema pcb ELECTRA CIM150 PAS

Probleme stomac

Sfat achizitie bicicleta oras

Canalele Sky Showtime 1 și S...
 

vector

- - - - -
  • Please log in to reply
20 replies to this topic

#1
adriana_adi

adriana_adi

    Junior Member

  • Grup: Members
  • Posts: 142
  • Înscris: 27.12.2012
Buna!
Am un vector si trebuie sa inserez între două elemente consecutive,cu diferenţa < 10, maximul lor în modul.
Imi da eroare la functia max.
 #include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int v[100],n,i;
void main()
{
	FILE *f,*g;
	f=fopen("in.txt","r");
	for(i=0;i<=n;i++)
	fscanf(f,"%d");
	fclose(f);
	g=fopen("out.txt","w");
	for(i=0;i<=n;i++)
	if(v[i+1]-v[i]<10)
	  v[i]=max(abs(v[i]),abs(v[i+1]));
	  fprintf(g,"%d");
	  fclose(g);
}

Edited by adriana_adi, 23 April 2014 - 18:45.


#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,416
  • Înscris: 10.08.2005
f=fopen("in.txt","r");
for(i=0;i<=n;i++)
fscanf(f,"%d");
fclose(f);
Si m-am oprit!

Edited by MarianG, 23 April 2014 - 18:46.


#3
adriana_adi

adriana_adi

    Junior Member

  • Grup: Members
  • Posts: 142
  • Înscris: 27.12.2012
Deci fclose(f) vine la sfarsit?
E prima problema pe care o fac in fisier. Habar n-am.

#4
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,416
  • Înscris: 10.08.2005
Si atunci de ce-mi spui ca ai probleme cu vectorul?

Tu ce citesti din fisierul minune? Ca eu n-am vazut nimic. (de aia m-am oprit)

Edited by MarianG, 23 April 2014 - 18:54.


#5
adriana_adi

adriana_adi

    Junior Member

  • Grup: Members
  • Posts: 142
  • Înscris: 27.12.2012
Pentru ca acolo imi da eroare.
 #include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int v[100],n,i;
void main()
{
		FILE *f,*g;
  f=fopen("in.txt","r");
  for(i=0;i<=n;i++)
  fscanf(f,"%d",v[i]);
  fclose(f);
  g=fopen("out.txt","w");
  for(i=0;i<=n;i++)
   if(v[i+1]-v[i]<10)
	 v[i]=max(abs(v[i]),abs(v[i+1]));
	 fprintf(g,"%d",v[i]);
	 fclose(g);
}

Edited by adriana_adi, 23 April 2014 - 19:06.


#6
adrian93

adrian93

    Active Member

  • Grup: Members
  • Posts: 1,740
  • Înscris: 29.10.2009
Funcția aia max... există pe undeva?

+ Ai grijă cu indexarea aia. Tu ai declarat un vector de 100 de int. Asta înseamnă că ai la dispoziție v[0], v[1], ... v[99]. Dacă n = 100 (limita maximă impusă de tine), atunci conform for-ului tău, tu vei încerca să scrii și la v[100].

for(i=0;i<=n;i++)
if(v[i+1]-v[i]<10)

Iar aici, vei accesa chiar v[101]!

Edited by adrian93, 23 April 2014 - 20:39.


#7
adriana_adi

adriana_adi

    Junior Member

  • Grup: Members
  • Posts: 142
  • Înscris: 27.12.2012
Dar tot nu merge ...
 #include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int v[100],n,i;
void main()
{
	FILE *f,*g;
	f=fopen("in.txt","r");
	for(i=0;i<=n;i++)
	fscanf(f,"%d",v[i]);
	fclose(f);
	g=fopen("out.txt","w");
	 for(i=0;i<n;i++)
		if(v[i+1]-v[i]<10)
		{
			if(abs(v[i])<abs(v[i+1]))
				v[i]=abs(v[i+1]);
			else
				v[i]=abs(v[i]);
		}
	fprintf(g,"%d",v[i]);
	fclose(g);
}

Edited by adriana_adi, 23 April 2014 - 21:35.


#8
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
1. Cat este n?
2. Marian ti-a atras atentia ca ai o problema majora la citire. Ai "reparat" ceva, dar inca nu e bine.

#9
adriana_adi

adriana_adi

    Junior Member

  • Grup: Members
  • Posts: 142
  • Înscris: 27.12.2012
Nu mai da eroare, dar nu afiseaza nimic...
[size=4]#include <stdio.h>[/size]
#include<conio.h>
#include<stdlib.h>
int v[100],i;
void main()
{
	FILE *f,*g;
	f=fopen("in.txt","r");
	for(i=0;i<100;i++)
	fscanf(f,"%d",&v[i]);
	fclose(f);
	g=fopen("out.txt","w");
	for(i=0;i<100;i++)
		if(v[i+1]-v[i]<10)
		{
			if(abs(v[i])<abs(v[i+1]))
				v[i]=abs(v[i+1]);
			else
				v[i]=abs(v[i]);
		}
	fprintf(g,"%d",v[i]);
	fclose(g);
}



#10
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,416
  • Înscris: 10.08.2005
Vezi ca tot nu scrii bine.

Edited by MarianG, 24 April 2014 - 12:22.


#11
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
Stiu ca esti o persoana care vrea sa invete. Asa ca-ti recomand acest mini tutorial.
In mare parte acum e mai bine, dar ai niste OOB pe acolo.

PS: Explica ce crezi ca face linia asta:
fprintf(g,"%d",v[i]);


#12
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,416
  • Înscris: 10.08.2005

View Postadriana_adi, on 24 aprilie 2014 - 11:49, said:

Nu mai da eroare, dar nu afiseaza nimic...
ca sa te lamuresc .. nu afiseaza pentru ca scrii in fisier.

unde mai pui ca trebuie sa verifici indenficiatorul pentru fisier

#13
adriana_adi

adriana_adi

    Junior Member

  • Grup: Members
  • Posts: 142
  • Înscris: 27.12.2012

View PostCy_Cristian, on 24 aprilie 2014 - 13:14, said:


PS: Explica ce crezi ca face linia asta:
fprintf(g,"%d",v[i]);
Scrie in fisier, deci nu trebuie

View PostMarianG, on 24 aprilie 2014 - 15:24, said:



unde mai pui ca trebuie sa verifici indenficiatorul pentru fisier
Nu inteleg la ce te referi

#14
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,228
  • Înscris: 24.02.2007
Arata-ne cum arata fisierul de intrare si cel de iesire.

#15
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,416
  • Înscris: 10.08.2005
http://www.cplusplus...e/cstdio/fopen/


** am scris de pe telefon trebuia sa fie identificatorul, habar n-am de ce a ajus sa fie asa.

Edited by MarianG, 24 April 2014 - 19:30.


#16
adriana_adi

adriana_adi

    Junior Member

  • Grup: Members
  • Posts: 142
  • Înscris: 27.12.2012

View Postdani.user, on 24 aprilie 2014 - 18:38, said:

Arata-ne cum arata fisierul de intrare si cel de iesire.
in.txt
-20 -5 15 -13 14
out.txt
-20 20 -5 15 15 -13 14 14


#17
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,228
  • Înscris: 24.02.2007
Si ce intelegi acum prin "tot nu merge"?

#18
cumva

cumva

    Junior Member

  • Grup: Members
  • Posts: 167
  • Înscris: 28.08.2010

View Postadriana_adi, on 24 aprilie 2014 - 19:43, said:

in.txt
-20 -5 15 -13 14
out.txt
-20 20 -5 15 15 -13 14 14

Eu nu inteleg ce legatura este intre datele tale din fisierul de iesire si cerinta problemei enuntata de tine.De exemplu de ce a aparut 20-ul ala intre -20 si -5 cand diferenta lor este mai mare decat 10 sau intre -13 si 14 de ce a aparut 14 cand diferenta lor este mai mare decat 10 ?

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate